javascript对象文字和自动执行功能

dun*_*nza 6 javascript

我正在研究Javascript中的对象文字和自执行函数.通过一些YUI代码,我遇到了一些自我执行的对象文字方法.我的问题是为什么下面的代码没有警告'Ohai Mark!';

var bar = {
    alert: function () {
        window.alert('Ohai Mark!');
    },
    init: (function () {
        bar.alert();
    }())
};
Run Code Online (Sandbox Code Playgroud)

Rob*_*obG 8

详细解释:

> var bar = {
Run Code Online (Sandbox Code Playgroud)

在javascript中,首先处理声明,因此bar在执行开始之前作为变量存在.

>     alert: function () {
>         window.alert('Ohai Mark!');
>     },
>     init: (function () {
>         bar.alert();
>     }())
Run Code Online (Sandbox Code Playgroud)

在评估右侧的表达式,将为指定一个值.在评估过程中,bar在达到语句(整行)时具有任何价值.它目前尚未定义,因此它还没有警报属性.

> };
Run Code Online (Sandbox Code Playgroud)