[英]Javascript Closures
因此,我创建了一个可变汽车,然后将其分配给一个函数,并添加了参数模型year。 然后参考参数在函数中创建一个对象。
然后创建“关闭”内部函数yourCar(),并在其中返回外部函数对象“属性”。 然后在外部函数中返回内部函数yourCar()以在全局范围内可用。
因此,据我了解,我认为内部函数可以访问外部函数的所有变量和函数。 因此,我将其称为yourCar(model,year); 获取对象变量。
但是不断收到错误消息:“ yourCar未定义” ...我在mozilla fox上使用便笺本进行测试和调试。 任何人都可以帮忙,所以我可以更好地理解它!
var car = function(model, year){
var Properties = {
model: nissan,
year: 2004
}
function yourCar() {
return Properties;
}
return yourCar();
}
yourCar(model, year);
yourCar
是在car
内部定义的。 只有car
内部的函数和变量才能访问yourCar
。 它对car
功能来说是私人的。 因此,您不能在外部访问它。 你应该像这样实际上叫car
car (model, year);
您已经将yourCar
定义为仅在car
范围内的函数(或更准确地说,是绑定到car
的匿名函数)。 因此,在car
外部, yourCar
毫无意义。 它是未定义的。
您似乎正在尝试执行以下操作:
var car = function(model, year){
var Properties = {
model: model,
year: year
};
function yourCar() {
return Properties;
}
return yourCar();
}
var result = car('nissan', 2004);
就像两个都说的那样,您正在尝试对错误的对象使用私有方法。
这是一个JSBIN演示: http ://jsbin.com/acohoYUP/2/edit?js,console
主要持有:
var car = function(model, year){
var Properties = {
model: "nissan",
year: 2004
};
function yourCar() {
return Properties;
}
return yourCar();
};
var updatedCar = function(model, year){
var Properties = {
model: model,
year: year
};
function yourCar() {
return Properties;
}
return yourCar();
};
var badCar = car("lemon", 1999);
var goodCar = updatedCar("ferrari", 2014);
您可以看到badCar
的统计信息将是nissan
和2004
,而不是传递的参数(例如,使用badCar.year
)。
在goodCar
,就像pswg建议的那样,它们是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.