Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript原型赢得';不要更新方法_Javascript_Oop_Prototype - Fatal编程技术网

Javascript原型赢得';不要更新方法

Javascript原型赢得';不要更新方法,javascript,oop,prototype,Javascript,Oop,Prototype,我正在学习使用javascript的prototype特性(而不是库)。我想我可以用MyObject.prototype.myFunction=function(){…}替换对象的方法。显然这不起作用 下面的代码定义了一个对象,并使用prototype替换其函数。在浏览器中运行它,控制台仍然显示原始输出 <script type="text/javascript"> function TestObject() { this.testFu

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

函数TestObject(){
this.testFunction=function(){
console.log(“原始功能输出”);
}
}
//这将替换对象中定义的方法。
TestObject.prototype.testFunction=函数(){
log(“你被改变了”);
}
var HelloWorld=newtestobject();
HellowWorld.testFunction();//是否应输出“您已被更改”

实际上,在构造函数中,您正在重写原型。原始代码是原型的代码(在运行对象之前,一旦创建对象,它就会被绑定)。

实际上,在构造函数中,您正在重写原型。原始代码是原型的代码(在运行对象之前,只要创建对象,它就会被绑定)。

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

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"

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

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"

实例方法隐藏了任何原型方法。实例方法隐藏了任何原型方法。当你说“它被绑定”时,你指的是什么?当你说“它被绑定”时,你指的是什么?