令人费解的JavaScript输出

令人费解的JavaScript输出,javascript,prototype,javascript-objects,Javascript,Prototype,Javascript Objects,考虑下面的代码。这样创建的d1对象没有name属性,但为什么?但是,如果我删除prototype作为function对象的设置,一切都会正常工作。请注意,下面的代码是故意这样写的,以测试JS的反应 function Dog(name){ this.name = name; } // Notice that I am putting function object as prototype Dog.prototype = function(){} var d1 = new Dog(

考虑下面的代码。这样创建的
d1
对象没有
name
属性,但为什么?但是,如果我删除prototype作为function对象的设置,一切都会正常工作。请注意,下面的代码是故意这样写的,以测试JS的反应

function Dog(name){

  this.name = name;

}

// Notice that I am  putting function object as prototype 
Dog.prototype = function(){}

var d1 = new Dog("happy");
console.log(d1.name); //gives empty string
console.dir(d1); // `d1` does not have name property 
console.log(d1 instanceof Dog);// returns true ??

通过这样做,您正在销毁构造函数属性。您应该删除
Dog.prototype=function(){}
它重置所有内容。“我将函数对象作为原型”-好吧,不要这样做。@Chris,没有
name
属性,我的Dog对象是如何创建的?@Bergi,我只是在玩JS,但现在这个输出解释我无法逻辑链接