根据http://js4py.readthedocs.org/en/latest/object-tree.html,
所有JavaScript对象都是继承树的一部分。每个对象 树有一个父对象,也称为原型 对象(孩子)。
我正在玩,以确保我理解正确。由于"lakdas"
从其父myOtherObj
继承了字段x
,因此不应该打印myObj
以下内容吗?为什么要记录undefined
?
var myObj = { x:"lakdas" };
var myOtherObj = { y:"lkjaas" };
myOtherObj.prototype = myObj;
console.log(myOtherObj.x); /* Should print "lakdas", right? */
答案 0 :(得分:4)
您无法通过分配prototype
属性来更改对象的原型。在许多引擎中,在创建对象后根本无法更改原型。您可以在对象创建时设置原型:
var myObj = { x:"lakdas" };
var myOtherObj = Object.create(myObj); // sets prototype
myOtherObj.y = "lkjaas";
console.log(myOtherObj.x); // prints "lakdas"
函数具有prototype
属性 - 当您使用函数作为构造函数时,存储在函数的prototype
属性中的对象将成为构造对象的原型:< / p>
var myObj = { x:"lakdas" };
function foo() {
this.y = "lkjaas";
}
foo.prototype = myObj;
var myOtherObj = new foo();
console.log(myOtherObj.x); // prints "lakdas"