Javascript 原型(prototype)不会更新方法

标签 javascript oop prototype

我正在学习使用 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/

相关文章:

Javascript 将 switch 的大小写绑定(bind)到 html 按钮

Javascript 类仅显示其中一个对象

javascript - 通过 javascript 生成的 URL 传递 &?

Javascript 继承 - "this"关键字失去绑定(bind)?

function - D 编译时函数类型提取

javascript - 这怎么可能是真的??? obj2.__proto__.isPrototypeOf(obj2)//true

javascript - javascript AMD 加载样式的 IDE 自动完成

c# - 当我需要一些元素时,我应该只使用它的 "int id"吗?

javascript - 闭包如何访问被破坏的变量?

javascript - PhoneGap-App 的正确回调和引用