Object.create and Prototypes

Object.create and Prototypes

本文关键字:Prototypes and create Object      更新时间:2023-09-26

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

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

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

那为什么,当我尝试时

print(p.prototype);

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

谢谢

只有函数具有prototype属性[ES5]

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

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

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

试试看,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();