属性描述符与prototype的一些细节

function Person(){

this.name='li'

}

Person.prototype.age=10;或者

Person.prototype={age:10}第二种会覆盖prototype的construct 但是prototype内的proto依然指向object的prototype,就算设置

Person.prototype=null,也会指向object的原型

而Object.create(null,{a:1})则创建了一个纯净的对象  不继承object的任何属性

Object等静态getOwnpropertynames 或者原型方法obj.hasOwnproperty都只能获取实例所有属性

for in可以获取其原型(包括object)上可枚举属性  普通对象无法用for of  必须伪装成类数组对象

Array Object等属性都是不可枚举的  就是阻止通过for in访问  可以设置Object.prototype.a=1就可以看见了

(今天读了继承,发现对象是可以改变原型链中的引用类型的,比如数组的push,但是任何直接赋值都会将属性添加到实例属性中)

!属性描述符通常都是默认true,用defineproperty时默认false

属性描述符 configurable,不可删除

writable  不可修改 enumerable 不可枚举

preventextension seal frozen

isextensible isseal isfrozen

猜你喜欢

转载自blog.csdn.net/weixin_42176561/article/details/88557836
今日推荐