我正在学习使用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>
答案 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)
不是真的,在你的构造函数中,你正在重写原型。原始代码是原型的(在创建对象之前它就被绑定了,然后运行它)。