Object.create和Prototypes

时间:2012-08-04 08:51:20

标签: javascript prototype object-create

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

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

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

那么,为什么,当我尝试

print(p.prototype);

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

谢谢

2 个答案:

答案 0 :(得分:8)

Only functions have a prototype property [ES5]

p通过内部o属性引用[[Prototype]],该属性在__proto__ [MDN]的某些浏览器中可以访问,但现已弃用。

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

Object.getPrototypeOf(p) === o // true

答案 1 :(得分:2)

试试这个,o成为p的原型,意味着op构造函数的原型。

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();