为什么我在x.test()上未定义?这是一个匿名函数。
var Calculator = function () {
// private stuff
var x = 55;
return {
// public members
y: x,
test: function () {
console.log(x);
}
};
};
var x = new Calculator();
console.log(x.y);
console.log(x.test());
答案 0 :(得分:2)
您正在记录x.test
的返回值,隐含undefined
:
console.log(x.y); // Logs 55
var x = x.test(); // Logs 55 (because of the console.log call in x.test)
console.log(x); // Logs undefined (because that's what x.test returned)
您的意思是从x
方法返回“私人”test
吗?
// ...
return {
y: x,
test: function () {
return x;
}
}
答案 1 :(得分:1)
因为您正在打印(console.log
)函数的返回,而该函数不会返回任何内容。
只需在x
函数中返回test
值:
var Calculator = function () {
// private stuff
var x = 55;
return {
// public members
y: x,
test: function () {
return x;
}
};
};