我们知道,当我们试图访问一个对象的属性时,它首先检查对象是否有自己的属性。如果它找不到,它会遍历原型并检查原型链等。任何情况下,当一个对象不遍历其原型链来获得价值?
来到这个问题,请检查下面的代码片段(http://jsbin.com/mabajidoti/edit?js,console)
function CT() {}
CT.prototype.myValue = 4;
var myObj = Object.create(CT);
console.log(myObj.myValue); //logs undefined
console.log(myObj.prototype.myValue) //logs 4
从上面的代码中,第一个执行console.log陈述,myObj.myValue被返回undefined即使myvalue的可在其原型(第二个console.log语句)?它不应该遍历原型链来获取myValue的值吗?
'CT.prototype'作为原型新的'CT'实例。 'Object.create(CT);'用'CT'本身作为原型创建一个新对象。如果你想'CT.prototype'成为原型,你必须调用'Object.create(CT.prototype)'。 –
*“任何情况下,当一个对象没有遍历其原型链获得价值?”*不。 –