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 に答える