Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript对象函数在重新分配对象的原型后消失_Javascript_Inheritance_Prototype - Fatal编程技术网

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打印了两次