0

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

2 回答 2

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"
于 2013-04-08T17:29:39.957 回答
1

并非如此,在您的构造函数中,您正在覆盖原型。原始代码是原型的代码(在您创建对象后立即绑定,然后再运行它)。

于 2013-04-08T17:23:49.420 回答