答案 0 :(得分:0)
当您键入p.constructor.prototype.a
时,JavaScript会在对象本身中检查属性constructor
,但它没有属性。发生这种情况时,它将通过__proto__
遍历原型链。这里的问题是对象p
及其原型没有属性constructor
。这是由于使用Object.create()
引起的。它与new
之间的区别已经在Understanding the difference between Object.create() and new SomeFunction()中描述为@adiga在您的帖子下评论了:)
答案 1 :(得分:0)
这很简单。
新的是Object.create(a.prototype)
而Object.create(a)与Object.create(a.prototype)不同。 新的运行构造函数代码,而对象不运行构造函数。
请参见以下示例:
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