Javascript原型不会更新方法

Javascript prototype won't update a method

本文关键字:更新 新方法 原型 Javascript      更新时间:2023-09-26

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

实例方法通过原型链继承的影子方法

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"

不完全是这样,在构造函数中,你重写了原型。原始代码是原型的代码(在您创建对象时,在运行它之前,它被绑定)。