JavaScript对象函数在重新分配对象的原型后消失
代码如下:JavaScript对象函数在重新分配对象的原型后消失,javascript,inheritance,prototype,Javascript,Inheritance,Prototype,代码如下: function ClassName() { } var cnObj = new ClassName(); ClassName.prototype.func = function() { console.log("hello"); } cnObj.func(); // => "hello" ClassName.prototype = new Object(); cnObj.func(); // => undefined 如果我们没有明确指定原型,JavaScript默认
function ClassName() { }
var cnObj = new ClassName();
ClassName.prototype.func = function() { console.log("hello"); }
cnObj.func(); // => "hello"
ClassName.prototype = new Object();
cnObj.func(); // => undefined
如果我们没有明确指定原型,JavaScript默认使用对象。因此,当我将新函数func添加到类名时,它可以正常工作。但是,当我将Object指定为类名prototype时,函数func是否以某种方式从prototype中删除了呢
这个问题有点类似于,但不同的是,这里我使用的原型与添加新函数func之前的原型相同。没有任何东西会消失。您可能正在开发人员控制台中运行,但没有注意到hello在同一行上有一个2。undefined是函数的返回值。只有在ClassName.prototype=新对象之后创建的新ClassName对象才会受到更改的影响。当然,它会消失。。。原型是一个实时参考。。当你被分配时。。。。您删除了func方法。。所以,当你打电话给cnObj.func。。它看起来像cnObj的原型。。。不在那里,所以它在ClassName上看起来。。。哦,不在那里。。你写得太多了。用node.js运行它-hello打印了两次