比方说,我有一个方法Object.getNumber(),我想对该方法的结果做些小改动,例如,将1加到结果中,没有,我无法访问该方法的代码。
有什么办法可以通过其原型做到这一点?我需要在我想的defineProperty调用内访问该方法。
Object.defineProperty(Object.prototype, 'getNumber',{ get: function () { ... } });
答案 0 :(得分:2)
您始终可以替换原型中的原始方法,但是将原始方法保留在局部变量中。像这样:
Object.prototype.getNumber = (function() {
let originalFn = Object.prototype.getNumber;
return function() {
let originalResult = originalFn.apply(this, arguments);
return originalResult + 1;
};
})();
答案 1 :(得分:0)
方法只是一个可以传递的函数,因此您可以简单地将函数依次应用:
const getNumber = Object.prototype.getNumber;
Object.prototype.getNumber = function() {
const result = getNumber();
return result + 1;
};
但是修改本机原型不是一个好习惯,尤其是Object.prototype
,因为它会影响太多事情。