我在使用以下代码时遇到一些问题:
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。
这是范围还是定义的问题?
最佳答案
只是查找当前实例的一个小问题。您只需使用“this”定义 num_passengers 所需的实例即可。
此外,这样您就不需要 num_passengers 的全局变量,这意味着您可以同时拥有多个实例(汽车、公共(public)汽车和摩托车)。这将有可能避免 future 的问题。
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("car", 5, 10);
bus.pickUpPassengers = function(toPickUp){
this.num_passengers += toPickUp;
return this.num_passengers;
}
关于Javascript:返回 NAN 的实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37708092/