博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象标签1
阅读量:7036 次
发布时间:2019-06-28

本文共 2640 字,大约阅读时间需要 8 分钟。

hot3.png

//不可枚举的属性,在控制台中其字体颜色就会变成浅window.onload=function () {    /*******属性标签来控制对象属性的权限***********/    delete Object.prototype;//返回false,因为Object.prototype的属性标签设置其不能被删除    var descriptor=Object.getOwnPropertyDescriptor(Object,'prototype');//查询Object.prototype所有的属标签    console.log(descriptor)    //configurable:false  表示该属性不可配置    //enumerable:false    表示该属性不可被枚举    //    /*********delete删除变量*********/    var globalVal=5;    console.log(delete globalVal)//返回的是false,无法删除val申明的变量    function fn() {    }    delete fn ;//false    console.log(delete fn )//无法删除函数变量    //可以删除变量的特殊情况:    //①:隐式申明变量    globalVal0=6;    delete globalVal0    console.log(delete globalVal0)    //②:在eval中申明的变量可以被删除    eval("var s=10;console.log(delete s)")//返回true    //查看一个属性是否可以被枚举  propertyIsEnumerable(),传入属性的key值,字符串类型传参    var cat=new Object();    cat.leg=4;    cat.eye=2;    console.log('leg' in cat);//true in操作符会向对象的原型链上查找    console.log('eye' in cat);//true    console.log('toString' in cat);//true    console.log(cat.propertyIsEnumerable('leg'))//true    console.log(cat.propertyIsEnumerable('toString'))//false    //设置对象的属性标签    Object.defineProperty(cat,'price',{enumerable:false,value:1000});    //通过该方式创建对象的时,它的所有布尔类型的属性标签值都为false    console.log(cat.propertyIsEnumerable('price'))//false    console.log(cat)//在控制台中就看到cat的price属性变成灰色,就表示不可枚举    console.log(cat.hasOwnProperty('price'))//true    /****属性枚举*****/    var o={x:1,y:2,z:3}    console.log('toSring' in o);//true    o.propertyIsEnumerable('toString')//属性标签控制toString属性不可枚举    var key;    for(key in o){        console.log(key)//只会打印出 x y z,而不会打印出toString,因为toString属性不可枚举    }    //再在o对象的基础上创建对象obj    var obj=Object.create(o,{b:{value:8}});//返回一个新对象。在指定原型对象上添加新属性后的新对象    //通过Object.create()创建的对象,obj从o对象上继承    //Object.create(proto,{propertiesObject})    //****proto一个对象,应该是新创建的对象的原型    //propertiesObject可选。该参数对象是一组属性与值,该对象的属性名称将是新创建的对象的属性名称,值是属性描述符,    //只有该对象中自身拥有的可枚举的属性才有效,也就是说该对象的原型链上属性是无效的。    //且属性b的属性标签默认都为false,不可写,不可枚举,不可配置的  configurable:false,enumerable:false    obj.a=6;    obj.b=10//下面打印obj,其中b的属性值依旧为8,没有变,b是不可写,不可枚举,不可配置的  无法用for in枚举出来    console.log(obj)//{a:6,b:8}    console.log(obj.__proto__)//指向的是o对象    var key0;    for(key0 in obj){        console.log(key0)// //b属性由于是不可枚举的,所以输出结果x y z a        if(obj.hasOwnProperty(key0)){//过滤掉原型上的属性            console.log(key0) //a            //b属性由于是不可枚举的,所以输出结果a        }    }    console.log(obj.hasOwnProperty('b'))//true obj对象本身就有b属性,只不过不可写,不可枚举,不可配置的    console.log(obj.b)//8    // hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,    // 此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员}```

转载于:https://my.oschina.net/u/3407699/blog/1548812

你可能感兴趣的文章
RAC在线替换OCR、DATA、FRA等ASM磁盘
查看>>
[Office]使用 Microsoft Office Live Workspace
查看>>
编译安装与RPM安装的区别
查看>>
我的友情链接
查看>>
linux下ftp的安全巧用之pureftp!
查看>>
初始化AppWidget框架结构
查看>>
[PHP] 文件系统交互
查看>>
我的友情链接
查看>>
文本处理“三剑客”之SED"
查看>>
find应用示例
查看>>
Kmail身份验证组件
查看>>
拷贝构造函数为何传入引用?
查看>>
at命令及服务
查看>>
resin app server安装总结
查看>>
订单信息表和订单明细表
查看>>
背包九讲
查看>>
AS莫名报错 Error:Could not download junit.jar (junit:junit:4.12): No cached version available
查看>>
右侧客服 运动案例
查看>>
T4 Editor地址
查看>>
小程序文档
查看>>