以下是代码:
var myVar = {
test:function(){
alert('hello');
},
myinternalObj: {
internalTest: myVar.test
}
};
为什么在javascript中我无法将myVar.test分配给internalTest?
答案 0 :(得分:2)
myVar.test
评估之前(对象文字)对myVar
的分配,因此myVar
未定义并访问{{1}上的属性}或undefined
会导致错误。
答案 1 :(得分:1)
在第internalTest: myVar.test
行,myVar尚未定义(您仍然使用属性internalTest
定义它。
您需要将代码更改为
var myVar = {
test:function(){
alert('hello');
}
};
myVar.myinternalObj = {
internalTest: myVar.test
};
答案 2 :(得分:0)
当引擎读取myVar.test时,它还没有值
答案 3 :(得分:0)
myVar
在其自己的定义中未知,您应该写:
var myVar = {
test:function(){
alert('hello');
}
};
myVar.myinternalObj = { internalTest : myVar.test };
答案 4 :(得分:0)
这是因为您在myinternalObj中引用的对象尚未初始化。
更简单的版本看起来像
var object = {a:'a', b: object.a};
当你在对象内部引用它时,对象的初始化没有完成。
答案 5 :(得分:0)
这是因为当myinternalObj设置好后,myVar仍在设置中。
你究竟想要实现什么目标。我想你的代码可以重构。
答案 6 :(得分:0)
以下在JS控制台中有效:
> var myVar = {}
undefined
> myVar.test = function() { alert('hello'); }
function () { alert('hello'); }
> myVar.myinternalObj = { internalTest: myVar.test }
Object
> myVar.myinternalObj.internalTest();
//shows the alert