我想通过将它添加到原型(prototype)来覆盖 JS 对象的函数。
var originalObject = function(){
this.someFun = function(){
// ...
}
}
var otherObj = function(){
this.otherFun = function(){
originalObject.prototype.fun = function(){
return 'This is the overwritten function.';
}
var o = new originalObject();
return o.fun()
}
}
这样,当我执行 new otherObj().otherFun()
时,我得到了预期的结果('这是被覆盖的函数。'), 但如果我尝试添加的函数已经是 originalObject
var originalObject = function(){
this.fun = function(){
return 'This is the original function';
}
this.someFun = function(){
// ...
}
}
然后结果不是预期的结果,事实上 new otherObj().otherFun()
返回 'This is the original function' .
所以,是 this将方法添加到原型(prototype)并覆盖它的唯一方法是什么?最重要的是,为什么我不能“覆盖”原型(prototype)中的函数?
最佳答案
在js对象中有两个层次,直接依赖对象和直接依赖原型(prototype)。当您调用对象中的属性时,它会从根开始搜索,然后在分支中查找。你可以看到下面的树:
关于javascript - 为什么我不能 "overwrite"javascript 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945447/