由上图可见,for..in可以遍历对象上所有的属性,包括原型属性;而
Object.getPropertyNames() 与 Object.keys()只能遍历对象中可枚举的属性。
以及obj.hasOwnProperty(propName)检测是否含有自身属性。
从该段测试代码中可得出以下原型链的关系:
myObj.prototype.newPro
//"yes"
myObj.newPro
//undefined
myObj.prototype.newShine
//"It's me"
myObj.newShine
//"It's me"
myTest.newPro
//"yes"
myTest.newShine
//"It's me"
/*----------new对象的原型链--------------*/
myTest.__proto__ === myObj.prototype;
//true
myObj.prototype.__proto__ === Object.prototype;
/*------------create对象的原型链--------------------*/
var myTest3 = Object.create(myObj);
myTest3.__proto__ === myObj;
//true
myTest3.__proto__.prototype.__proto__ === Object.prototype;
//true
new()对象的原型链.jpeg
网友评论