3

当我使用 object.create 像这样创建一个新对象时,

o = {x:1,y:2};
p = Object.create(o);

我的印象是 o 成为 p 的原型并继承了它的所有方法。

那为什么,当我尝试

print(p.prototype);

输出未定义?o 定义明确!!

谢谢你

4

2 回答 2

8

只有函数prototype属性[ES5]

po通过内部属性进行引用[[Prototype]],在某些浏览器中可以使用__proto__ [MDN]访问,但现在已弃用。

您可以使用Object.getPrototypeOf [MDN]获取对对象原型的引用:

Object.getPrototypeOf(p) === o // true
于 2012-08-04T09:03:37.067 回答
2

试试这个,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();
于 2012-08-04T08:55:04.847 回答