当我使用object.create创建一个像这样的新对象时,
o = {x:1,y:2};
p = Object.create(o);
我的印象是o成为p的原型并继承了它的所有方法。
那么,为什么,当我尝试
时print(p.prototype);
输出未定义? o定义明确!!
谢谢
答案 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
的原型,意味着o
是p
构造函数的原型。
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();