簡體   English   中英

理解一段簡單的JS代碼 - 功能 -

[英]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.

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