2

假设有一个简单的对象字面量,其名称永远不会改变:

var car = {
    wheels : 4,
    construct : function() {
        var that = this;
        setTimeout(function() {
            console.log(that.wheels);
            console.log(car.wheels);
        }, 500);
    }
};

我的问题是:哪种方式更好?通过对象名称引用或创建新变量(这可能需要一些时间和内存,并且可能必须在多个函数中完成)?

4

1 回答 1

2

在对象中,您应该始终通过this(或它的副本,例如that,如果需要)引用该对象,以防止以下损坏:

var car = ...

// do stuff

car = undefined;   // or anything else, perhaps by a code hacker in the JS console

// class is now broken

您应该将碰巧在外部赋予您的对象的变量名称视为您不知道的,并且可能会更改。

其他人可能会称其为其他名称,可能有多个名称,名称可能突然完全指向其他对象。这些变量是为了对象引用的“所有者”的利益,而不是为了对象本身。

于 2013-09-20T16:22:32.747 回答