Javascript原型不会更新方法

时间:2013-04-08 17:20:55

标签: 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>

2 个答案:

答案 0 :(得分:2)

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

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"

答案 1 :(得分:1)

不是真的,在你的构造函数中,你正在重写原型。原始代码是原型的(在创建对象之前它就被绑定了,然后运行它)。