[英]Javascript object strange behavior
我執行了這個javascript代碼:
var motorbike = {
"Wheel" : move(),
"Motor" : start()
}; // CREATE MOTORBIKE OBJECT
document.write(motorbike.Wheel); // MOVE MY MOTORBIKE
document.write(motorbike.Motor); // START MY MOTORBIKE
function move(){
return "-I'm moving<br/>";
}
function start(){
document.write("-Starting<br/>");
return "-Broom broom...";
}
在屏幕上應該出現:
-I'm moving
-Starting
-Broom broom...
但是當我執行它時......
-Starting
-I'm moving
-Broom broom...
Javascript首先打印“direct”document.write(直接寫入字符串),然后打印出返回的那些。 為什么javascript會這樣做?
看着 :
var motorbike = {
"Wheel" : move(),
"Motor" : start()
};
這些方法運行,而不是在調用屬性時,而是在構建對象時!
這就是為什么調用start
的document.write
,因此你會看到來自的字符串: document.write("-Starting<br/>");
第一。
試試這個:
var motorbike = {
"Wheel" : alert('1')
};
您將立即立即看到警報!
你可能會追隨:
var motorbike = {
"Wheel" : move,
"Motor" : start
}; // CREATE MOTORBIKE OBJECT
document.write(motorbike.Wheel()); // MOVE MY MOTORBIKE
document.write(motorbike.Motor()); // START MY MOTORBIKE
當你寫:
var motorbike = {
"Wheel" : move(),
"Motor" : start()
};
執行start
功能,並-Starting
打印。
-I'm moving
因為在motorbike
對象聲明之后調用了document.write()
函數,所以-Broom broom...
打印后會-I'm moving
-Broom broom...
如果要將功能分配給對象,則必須僅指定名稱,而不使用括號:
var motorbike = {
"Wheel" : move,
"Motor" : start
};
如果你說Wheel: move()
,則立即執行move並將結果分配給屬性Wheel。 因此,在初始化期間執行move
和start
,並開始寫入開始。 寫完document.write(motorbike.Wheel);
后,會寫入結果 (如函數返回的字符串document.write(motorbike.Wheel);
和document.write(motorbike.Motor);
PS如果分配了這些函數,那么在以后使用它們時,你需要使用括號來調用函數: document.write(motorbike.Wheel());
Javascript從上到下執行您的代碼。
因此函數move()
被執行並返回-I'm moving<br/>
被設置為Wheel的值。 然后執行start()
並立即將-Starting<br/>
寫入document
。 之后的線條
document.write(motorbike.Wheel); // MOVE MY MOTORBIKE
document.write(motorbike.Motor); // START MY MOTORBIKE
執行並將Wheel
和Moter
的值附加到文檔中。
如果你的start()
將返回整個文本,它將按預期工作。
function start(){
return "-Starting<br/>-Broom broom...";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.