JS代码出错:
var test = { a: function () { return 1; }, fn: { fn1: test.a }, exec: function () { return fn.fn1(); }, }
报错是:"caught TypeError: Cannot read property 'a' of undefined“ 这是找不到test.a;
把fn注释,放外面改成下面那样却不会报错?
var test = { a: function () { return 1; }, //fn: { // fn1: test.a //}, exec: function () { return fn.fn1(); }, } var fn = { fn1: test.a };
执行 test.exec(),得到1 请教各位大神这是原因,有什么解决方法吗?
一个对象没有被解析完,在对象里面再次引用其内部成员是不行的,可以考虑这样写:
var test = { a:function() { return 1; } }; test.fn = { fn1:test.a }; test.exec = function() { return test.fn.fn1(); } console.log(test.exec())
你的第二种写法test已经被解析完了,所以能运行成功。