令人费解的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,但现在这个输出解释我无法逻辑链接