簡體   English   中英

為什么以下代碼段在JS中不起作用?

[英]Why the following snippet doesn't work in JS?

以下是代碼:

var myVar = {
    test:function(){
       alert('hello');        
    },
    myinternalObj: {
        internalTest: myVar.test
    }
};

為什么在javascript中我無法將myVar.test分配給internalTest?

myVar分配給對象myVar.test 之前,先評估myVar.test ,因此myVar是未定義的,訪問undefinednull上的屬性會導致錯誤。

internalTest: myVar.test ,尚未定義myVar(您仍在使用internalTest屬性對其進行定義。

您需要更改為

var myVar = {
    test:function(){
       alert('hello');        
    }
};
myVar.myinternalObj = {
    internalTest: myVar.test
};

引擎讀取myVar.test時,尚無值

myVar在其自己的定義中未知,您應該這樣寫道:

var myVar = {
    test:function(){
       alert('hello');        
    }
};
myVar.myinternalObj = { internalTest : myVar.test };

這是因為您在myinternalObj中引用的對象尚未初始化。

一個更簡單的版本看起來像

var object = {a:'a', b: object.a};

當您在對象內部對其進行引用時,該對象的初始化尚未完成。

發生這種情況的原因是,當設置了myinternalObj時,仍然設置了myVar。

您到底想達到什么目的。 我想您的代碼可以重構。

以下在JS控制台中起作用:

> var myVar = {}
undefined

> myVar.test = function() { alert('hello'); }
function () { alert('hello'); }

> myVar.myinternalObj = { internalTest: myVar.test }
Object

> myVar.myinternalObj.internalTest();
//shows the alert

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM