Javascript 可以修改但不能替换方法';什么是原型?
假设我有一个方法Object.getNumber(),我想对该方法的结果做一个小的更改,例如在结果中添加1,不,我无法访问该方法的代码 有没有办法用它的原型做到这一点?我想我需要在defineProperty调用中访问该方法Javascript 可以修改但不能替换方法';什么是原型?,javascript,object,javascript-objects,Javascript,Object,Javascript Objects,假设我有一个方法Object.getNumber(),我想对该方法的结果做一个小的更改,例如在结果中添加1,不,我无法访问该方法的代码 有没有办法用它的原型做到这一点?我想我需要在defineProperty调用中访问该方法 Object.defineProperty(Object.prototype,'getNumber',{get:function(){…})方法只是一个可以传递的函数,因此可以一个接一个地应用该函数: const getNumber = Object.prototype.g
Object.defineProperty(Object.prototype,'getNumber',{get:function(){…})代码>方法只是一个可以传递的函数,因此可以一个接一个地应用该函数:
const getNumber = Object.prototype.getNumber;
Object.prototype.getNumber = function() {
const result = getNumber();
return result + 1;
};
但是修改本机原型不是好的做法,尤其是对象。原型
,因为这会影响太多的事情。方法只是一个可以传递的函数,因此可以一个接一个地应用该函数:
const getNumber = Object.prototype.getNumber;
Object.prototype.getNumber = function() {
const result = getNumber();
return result + 1;
};
但是修改本机原型不是好的做法,尤其是Object.prototype
,因为这会影响太多的事情。您可以始终替换原型中的原始方法,但将原始方法保留在局部变量中的某个位置。大概是这样的:
Object.prototype.getNumber = (function() {
let originalFn = Object.prototype.getNumber;
return function() {
let originalResult = originalFn.apply(this, arguments);
return originalResult + 1;
};
})();
您始终可以替换原型中的原始方法,但将原始方法保留在局部变量中的某个位置。大概是这样的:
Object.prototype.getNumber = (function() {
let originalFn = Object.prototype.getNumber;
return function() {
let originalResult = originalFn.apply(this, arguments);
return originalResult + 1;
};
})();
如果方法是Object.getNumber
,那么分配给Object.prototype.getNumber
将没有帮助。您需要覆盖对象.getNumber
本身。这真的是本机对象的方法,还是某个自定义名称空间?@Bergi我正在修改元素中的本机方法。如果该方法是对象.getNumber
,则分配给对象.prototype.getNumber
不会有帮助。您需要覆盖对象。getNumber
本身。这真的是本机对象的方法,还是某个自定义名称空间?@Bergi我正在修改元素中的本机方法。apply函数回答了我的下一个问题,您已经掌握了!谢谢apply函数回答了我的下一个问题,您已经掌握了!谢谢