javascript中的对象文字只能在window对象中定义?

时间:2014-12-02 17:51:45

标签: javascript

可以在任何函数声明中定义对象文字还是仅在窗口对象中定义?

function declaration()
{
    var objectLiteral = {
        property1: "test1",
        method1: function() {
            return "testMethod"
        }
    }
}

1 个答案:

答案 0 :(得分:2)

可以在任何地方定义对象文字 - 但它们受JavaScript的范围限制。

JavaScript范围内容 - 意味着您在范围内声明的任何内容都只能在该范围内访问。

关于JS的有趣之处在于函数是一等公民,这意味着函数就像对象或全局(窗口对象)空间一样拥有自己的上下文。本质上意味着您可以在其他函数中声明函数。

您在一个上下文中定义的任何内容都可用于您创建的任何子上下文。这是一个例子:

var x = {count: 0};
function doSomething() {
    console.log(x.count); // 0

    var y = {name: "bologna"};

    function printY() {
        console.log(y.name); // "bologna"

        var z = 1000;
    }

    console.log(z); // undefined
}
console.log(y); // undefined

这非常简化,并且JS中的范围可能会非常复杂。要更深入地了解JavaScript如何管理范围界定,请查看我在该主题上撰写的this article,或者这篇优秀的Sitepoint Article