javaScript中Object.create和new关键字之间的差异

javaScript中Object.create和new关键字之间的差异,javascript,prototypal-inheritance,proto,Javascript,Prototypal Inheritance,Proto,为什么输出来自一种情况而不是另一种情况?它们的proto中都有一个变量,但有一个例子我没有定义 当您键入p.constructor.prototype.a时,JavaScript会检查对象本身中的属性构造函数,但它没有属性构造函数。当这种情况发生时,它通过_uproto_;越过原型链。这里的问题是对象p及其原型没有属性构造函数。这是由于使用Object.create造成的。正如@adiga在您的帖子下评论的那样,它和新版本之间的区别已经在中描述:它非常简单 新的是Object.createa.p

为什么输出来自一种情况而不是另一种情况?它们的proto中都有一个变量,但有一个例子我没有定义

当您键入p.constructor.prototype.a时,JavaScript会检查对象本身中的属性构造函数,但它没有属性构造函数。当这种情况发生时,它通过_uproto_;越过原型链。这里的问题是对象p及其原型没有属性构造函数。这是由于使用Object.create造成的。正如@adiga在您的帖子下评论的那样,它和新版本之间的区别已经在中描述:

它非常简单

新的是Object.createa.prototype

而Object.createa与Object.createa.prototype不同。 new运行构造函数代码,而object不运行构造函数

请参见以下示例:

function a(){
    this.b = 'xyz';
};

a.prototype.c = 'test';
var x = new a();
var y = Object.create(a);

//Using New Keyword
console.log(x); //Output is object
console.log(x.b); //Output is xyz.
console.log(x.c); //Output is test.

//Using Object.create()
console.log(y); //Output is function
console.log(y.b); //Output is undefined
console.log(y.c); //Output is undefined

请以文字而不是图片的形式发布代码。可能是