簡體   English   中英

javascript object 文字和自執行函數

[英]javascript object literal and self-executing functions

我正在研究 Javascript 中的 object 文字和自執行函數。 通過一些 YUI 代碼,我發現了一些可以自行執行的 object 文字的方法。 我的問題是為什么下面的代碼沒有提醒'Ohai Mark;';

var bar = {
    alert: function () {
        window.alert('Ohai Mark!');
    },
    init: (function () {
        bar.alert();
    }())
};

詳細解釋:

> var bar = {

在 javascript 中,首先處理聲明,因此bar在執行開始之前作為變量存在。

>     alert: function () {
>         window.alert('Ohai Mark!');
>     },
>     init: (function () {
>         bar.alert();
>     }())

bar將在評估右側的表達式分配一個值。 在該評估期間, bar具有到達語句(整行)時的任何值。 它當前是undefined ,因此它還沒有alert屬性。

> };

執行代碼時,“bar”已定義但尚未分配結果 JSON object 在定義 init() 方法的點(並且即將分配給bar對象) [EDITED] 由於正確定義了 init 的函數范圍,我將在那里聲明 function,如下所示:

var bar = {
  init: (function () {
      var alert = function () {
        window.alert('Ohai Mark!');
      };

      alert(); //this will execute the code above
  }())
};

請參閱Javascript Garden#namespaces and scopes [編輯]你可能認為這類似於:

(function() {
  var c = c + 1;
})();

暫無
暫無

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

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