我正在学习使用 javascript 的 prototype
功能(而不是库)。我认为我可以使用 MyObject.prototype.myFunction = function () { ... }
替换对象的方法。显然这不起作用。
下面的代码定义了一个对象,并使用prototype
替换其函数。在浏览器中运行它,控制台仍然显示原始输出。
<script type="text/javascript">
function TestObject() {
this.testFunction = function() {
console.log("Original function output");
}
}
// This should replace the method defined in the object.
TestObject.prototype.testFunction = function() {
console.log("YOU GOT CHANGED");
}
var HelloWorld = new TestObject();
HellowWorld.testFunction(); // Should output "YOU GOT CHANGED"
</script>
最佳答案
通过原型(prototype)链继承的实例方法影子方法
var HelloWorld = new TestObject();
HelloWorld.testFunction(); // finds method on instance
// "Original function output"
delete HelloWorld.testFunction; // delete method from instance
HelloWorld.testFunction(); // not found on instance, look in prototype, found
// "YOU GOT CHANGED"
关于Javascript 原型(prototype)不会更新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15885174/