【发布时间】:2016-10-09 01:14:37
【问题描述】:
我在使用以下代码时遇到了一些问题:
var num_passengers;
function vehicleConstructor(name, num_wheels, num_passengers)
{
var vehicle = {};
vehicle.name = name;
vehicle.num_wheels = num_wheels;
vehicle.num_passengers = num_passengers;
vehicle.makenoise = function() {
}
return vehicle;
}
var bus = vehicleConstructor("bus", 5, 10);
bus.pickUpPassengers = function(toPickUp){
num_passengers += toPickUp;
return num_passengers;
}
bus.pickUpPassengers(5);
我为 pickUpPassengers() 添加了一个全局 num_passengers 以避免它未定义。
但是,我仍然收到总线实例的 pickUpPassegers 方法的 NAN。
这是范围界定问题还是定义问题?
【问题讨论】:
-
num_passengers永远不会用值初始化。您在pickUpPassengers中引用的是您在顶部定义的全局变量,而不是您在vehicleConstructor中添加到对象的车辆实例属性。 -
num_passengers未定义。 -
inside
bus.pickUpPassengers()this.num_passengers是绑定到bus实例的值,如果这就是您要查找的...(即返回 15)
标签: javascript methods javascript-objects nan