![](https://img.haomeiwen.com/i7900170/aff27dcc5a0fc545.jpg)
由上图可见,for..in可以遍历对象上所有的属性,包括原型属性;而
Object.getPropertyNames() 与 Object.keys()只能遍历对象中可枚举的属性。
![](https://img.haomeiwen.com/i7900170/b09a2c344e9349d1.jpg)
以及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
![](https://img.haomeiwen.com/i7900170/b095c036ea5d3385.jpeg)
网友评论