首页 新闻 会员 周边

JS对象属性中调用方法出错

0
悬赏园豆:50 [已解决问题] 解决于 2017-06-10 22:39

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 请教各位大神这是原因,有什么解决方法吗?

知北游z的主页 知北游z | 初学一级 | 园豆:9
提问于:2017-05-17 17:28
< >
分享
最佳答案
1

一个对象没有被解析完,在对象里面再次引用其内部成员是不行的,可以考虑这样写:

var test = {
    a:function() {
        return 1;
    }
};

test.fn = {
    fn1:test.a
};

test.exec = function() {
    return test.fn.fn1();
}

console.log(test.exec())

你的第二种写法test已经被解析完了,所以能运行成功。

收获园豆:50
逐影 | 小虾三级 |园豆:982 | 2017-05-17 18:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册