-
等于判断查看全部
-
typeof适合基本类型及function检测,遇到null失效 {}.toString适合内置对象和基本类型,遇到null和undefined失效 instanceof适合自定义对象,也可以用来检测原生对象,在不同iframe和Window间检测失效查看全部
-
enumerable:false, //Object.keys(obj);中不会列举出obj对象中enumerable为false的属性 Object.defineProperties(obj,{property1:{value:'abc', enumerable: true}, property2:{...},property3:{...}}) defineProperties可以接受json型的对象作为参数。除了显式注明的标签(obj.property1.enumerable),其他标签默认值都是false。 defineProperties的参数中,还可以设置属性的get set方法: Object.defineProperties(obj,{property1:{get:function(){}, set: function(value){}}}) configurable为true, writeable为false,要修改属性的值,可以通过修改value标签(因为configurable为true)实现,也可以通过修改writable为true,进而对属性直接赋值。 configurable为false,writable为true时,只能通过直接复制修改属性值,不能编辑value属性,不能修改get set方法 configurable为false时,所有标签都不能被修改,除了将writable从true改为false Object.getOwnPropertyDescriptor(对象名,'属性名');拿到某个属性标签的是否可读写,枚举,配置等 value: 属性值 writable: 该属性是否可写,可改变<br> enumerable:该属性是否可被枚举,就是可在for in中出现<br> configurable: 该属性的标签是否可改变,是否可用delete将该属性删除查看全部
-
第一个截图笔记查看全部
-
原始类型:object number string boolean null underfined查看全部
-
严格模式查看全部
-
var foo = {}; foo.x = 1; var obj = Object.create(foo); obj.x = 2; //这里能给予赋值是很正确的,可以通俗理解为obj和foo都是普通对象,普通对象当然能给自己添加属性赋值 //只是obj这个家伙偷懒‘引用’了foo的属性。但不影响obj有权利随意给自己添加属性不受你foo的限制, //所以obj.x可以随意赋值,但注意其实这没有改变foo.x的值 var foo = {}; Object.defineProperty(foo,'x',{value:1}); var obj = Object.create(foo); //这里就不一样了,Object.defineProperty()就是皇上的圣旨,给了foo特权,这个特权就是obj必须服从 //foo的指挥,只要foo说x是什么样子,那obj的x就是什么样子,所以这里不管obj.x赋值是多少对不起你都 //和foo.x的值一样; //obj.x想要翻身当主人怎么办? 当然还是需要Object.defineProperty()给的圣旨才行; Object.defineProperty(obj,'x',{value:2}); 1.原型链上有get或set方法,就不会在当前对象上设置元素。 2.原型上有set方法,则对原型上属性的赋值可以进行,否则不行。查看全部
-
类型检测小结:typeof、[[Class]]、instanceof查看全部
-
Object.prototype.toString.apply([]);==="[object Array]"; Object.prototype.toString.apply(function(){});==="[object Function]"; Object.prototype.toString.apply(null);==="[object Null]"; Object.prototype.toString.apply(undefined);==="[object Undefined]";查看全部
-
10.17继续查看全部
-
类型检测查看全部
-
数据分类查看全部
-
此处有疑问 【var getX=module.getX; getX();】查看全部
-
数组增删方法查看全部
-
首先,set方法实在给属性赋值的时候触发的函数,他参数只能传递一个 直接传递多个是不行的。那我们换个思路。把多个参数绑定到一个对象,然后把对象作为参数传给set方法。具体如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 var Person = { name:"Jobs", age:99, //定义一个change方法,可以改变Person的name和age属性,并且输出改变后的属性值 set change(o){ this.name = o.name; this.age=o.age; console.log("The Person's name:"+this.name+",and age:"+this.age+"."); } }; Person.change = {name:"xiaoming",age:88}; //执行结果如下: The Person's name:xiaoming,and age:88. 这样就没有问题了。根据这个,你甚至可以做到传好几个参数给set方法使用。查看全部
举报
0/150
提交
取消