【发布时间】:2014-05-18 06:19:38
【问题描述】:
考虑以下 JavaScript 中类的定义:
// Car constructor
function Car(color) {
var hasWheels = true;
this.color = color;
this.hasWheels = hasWheels;
}
var redCar = new Car('red');
console.log(redCar.hasWheels);
它似乎可以工作,因为它在 Firefox 中没有给出错误并将true 写入控制台。然而,这段代码是正确的还是 JavaScript 太宽容了? Netbeans 抱怨在 Car 构造函数中变量 hasWheels 未使用。当我输入redCar. 时,它也不会提示hasWheels。这适用于属性color。所以我必须将我的变量hasWheels 重命名为例如_hasWheels? (我知道在这个简单的示例中,我可以将属性 hasWeels 直接设置为 true,但这不是我的问题的重点。)所以新代码如下所示:
// Car constructor
function Car(color) {
var _hasWheels = true;
this.color = color;
this.hasWheels = _hasWheels;
}
var redCar = new Car('red');
console.log(redCar.hasWheels);
这似乎适用于 NetBeans。但是,我更喜欢为属性和变量赋予相同的名称,因为它们是在最后分配的。构造函数最后一行中的this['hasWheels'] = hasWheels 似乎也不起作用。
对于它的价值,这在 NetBeans 中运行良好:
function Car(color) {
var hasWheels = true;
return {
color: color,
hasWheels: hasWheels
};
}
var redCar = new Car('red');
console.log(redCar.hasWheels);
【问题讨论】:
-
这听起来像是 NetBeans 的问题。
标签: javascript class variables properties constructor