为什么 JS 对象属性中调用方法会报错?
js 对象属性中调用方法出错剖析
在 javascript 中,当尝试在一个对象的属性中调用方法时,可能会遇到错误。代码示例如下:
var test = { a: function() { return 1; }, fn: { fn1: test.a }, exec: function() { return fn.fn1(); } };
执行此代码时,会抛出以下错误:“fn 未定义”。这是因为 test 对象中的 fn 属性尚未解析完成,无法直接引用其 test.a() 方法。
为了解决这个问题,可以采用以下方式重写代码:
var test = { a: function() { return 1; } }; test.fn = { fn1: test.a }; test.exec = function() { return test.fn.fn1(); }; console.log(test.exec())
通过延迟解析 fn 属性,确保 test 对象中的所有成员都已就绪,这样就可以在 test.exec() 方法中正确调用 fn.fn1() 方法。