当我使用 object.create 像这样创建一个新对象时,
o = {x:1,y:2};
p = Object.create(o);
我的印象是 o 成为 p 的原型并继承了它的所有方法。
那为什么,当我尝试
print(p.prototype);
输出未定义?o 定义明确!!
谢谢你
当我使用 object.create 像这样创建一个新对象时,
o = {x:1,y:2};
p = Object.create(o);
我的印象是 o 成为 p 的原型并继承了它的所有方法。
那为什么,当我尝试
print(p.prototype);
输出未定义?o 定义明确!!
谢谢你
p
o
通过内部属性进行引用[[Prototype]]
,在某些浏览器中可以使用__proto__
[MDN]访问,但现在已弃用。
您可以使用Object.getPrototypeOf
[MDN]获取对对象原型的引用:
Object.getPrototypeOf(p) === o // true
试试这个,o
变成原型的p
意思o
就是p
's 的构造函数的原型。
console.log(p.constructor.prototype);
var o = {x:1,y:2};
var p = Object.create(o);
您可以在上图中如下所示:
var o = {x:1,y:2};
function constructor_of_p(){};
constructor_of_p.prototype = o;
var p = new constructor_of_p();