在看《高程3》第六章的《面向对象的程序设计》的原型那一节时,有一下5个函数,功能较为接近,但是又都很基础,很重要。所以在此,加以说明,以便日后复习
functionPerson(){this.age = 100}
varperson1 =newPerson;
①isPrototypeOf()
Person.prototype.isPrototypeOf(person1);//true
②Object.getPrototypeOf()
alert(Object.getPrototypeOf(person1) == Person.prototype)//true
③hasOwnProperty() //判断属性是否是存在于自己的实例中,如果是:返回true,如果仅仅存在自己的原型总,则返回false
person1.hasOwnProperty("age"); //fales 因为age是原型的属性,而不是自己实例的属性
④Object.keys() //如果你想要获得所有实例属性,并仅需可枚举的,可以使用这个方法 其实和for in遍历出来的是一样的
varkeys = Object.keys(Person.prototype); alert(keys);//"age"
⑤Object.getOwnPropertyName() //如果你想要获得所有实例属性,无论他是否可枚举,可以使用这个方法
varkeys = Object.getOwnPropertyNames(Person.prototype); alert(keys);//"constructor, age"
所有开发者定义的属性,均是可枚举的;
不可枚举的属性有: toLocaleString()、toString()、valueOf()、hasOwnProperty()、propertyIsEnumerable() es5将constructor和prototype的 [ [ Enumerable ] ] = false ,即可枚举属性设置为了 false
网友评论