假设有一个简单的对象文字名称永远不会改变:
var car = {
wheels : 4,
construct : function() {
var that = this;
setTimeout(function() {
console.log(that.wheels);
console.log(car.wheels);
}, 500);
}
};
我的问题是:哪种方式更好?通过对象的名称引用或创建一个新变量(可能需要一些时间和内存,并且必须在多个函数中进行探测)?
答案 0 :(得分: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
您应该将碰巧在外部上提供给您的对象的变量名称视为未知,并且可能会发生变化。
其他人可能会将其称为别的东西,可能有多个名称,名称可能突然指向其他一些对象。这些变量是为了对象的引用“所有者”的利益,而不是对象本身。