如何在自定义对象方法中调用另一个对象的方法?
解决方案
先理清楚你的场景和问题:
- 原本直接复用其他对象方法的写法没问题:
const myObject = { property: propertyFromAnotherObject.method };
- 你想把自定义逻辑(比如清空localStorage)和原方法结合,但之前的写法不对:
MyOwnProperty: () => { localStorage.setItem('Storage', null); propertyFromAnotherObject.method // 这里只是写了方法名,没执行,而且箭头函数可能搞砸this指向 },
两种正确的写法:
情况1:原方法不依赖自身的this
如果propertyFromAnotherObject.method执行时不需要用到原对象的this,直接在自定义函数里调用它就行:
const myObject = { myCombinedMethod: () => { // 先跑自己的逻辑 localStorage.setItem('Storage', null); // 再调用原方法 propertyFromAnotherObject.method(); } };
情况2:原方法依赖自身的this
如果原方法里用到了this,且这个this得指向propertyFromAnotherObject,别用箭头函数,改用普通函数,确保原方法的上下文正确:
const myObject = { myCombinedMethod() { localStorage.setItem('Storage', null); // 直接调用原方法就行,此时this自动指向propertyFromAnotherObject propertyFromAnotherObject.method(); // 要是怕上下文出问题,也可以用call明确绑定: // propertyFromAnotherObject.method.call(propertyFromAnotherObject); } };
你的错误主要是两点:一是没给原方法加()执行,光写方法名不会触发运行;二是如果原方法依赖this,箭头函数的this会指向外层作用域,导致原方法执行异常。
内容的提问来源于stack exchange,提问作者user19715801
相关产品推荐
相关产品推荐

