[英]Understanding a simple piece of JS code - Functions -
我正在閱讀JS Book的Ninja Secrets並看到這部分示例代碼:
var ninja = {
chirp: function signal(n) { //#1
return n > 1 ? signal(n - 1) + "-chirp" : "chirp";
}
};
var samurai = { chirp: ninja.chirp };
ninja = {};
所以我理解第一部分:我們有一個對象ninja
,它有一個方法。
我理解第二部分,現在我們正在創建一個名為samurai
的新對象,它有一個名為chirp
的屬性。
ninja.chirp
我的部分是ninja.chirp
一部分,我們在這做什么? 它是如何工作的?
它獲取ninja
對象(它是一個函數)的chirp
屬性的值,並將其賦值給正在構造的對象的chirp
屬性。
這是一個更簡單的例子(使用字符串而不是函數):
var foo, bar;
foo = { "an": "object" };
bar = { "an": foo.an }
alert(foo.an);
alert(bar.an);
我已經多次看過這個例子了,這是一個可怕的例子。 對於初學者來說,命名函數表達式在IE中是錯誤的,但除此之外它們完全沒必要,因為你可以簡單地引用arguments.callee
。
除此之外,使用遞歸函數重復一個字符串只是在尋找麻煩。 整個事情可以簡單得多:
function signal(n) {
return new Array(n+1).join("-chirp").substr(1);
}
在這里, chirp
被復制到samurai
。 比你可以破壞ninja
對象仍然使用samurai.chirp
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.