我有以下测试代码: 修改
var getIt = function () {
return this.x;
};
var obj1 = {
get : getIt,
x : 11
};
var obj2 = {
get : getIt,
x : 12
};
obj1.get();
obj2.get();
obj1.get();
当我运行此代码时,只有last函数返回 11 的值。因此,我没有看到三个值,而只看到最后一个。如果我删除最后一行,我只会看到 12 为什么会这样?
答案 0 :(得分:3)
我相信您在控制台中运行此代码,或者您根本看不到任何价值。控制台的默认行为是显示最新表达式的结果。
如果要记录所有值,可以使用console.log
显式记录单个表达式。
console.log(obj1.get());
console.log(obj2.get());
obj1.get();
请注意,您的代码不会运行,但我认为它确实没有提及任何错误。
答案 1 :(得分:1)
这是因为您在getIt
中指定了obj2
,因此第一次调用obj1
会导致错误。
未捕获的ReferenceError:未定义getIt
您应该将getIt
移到顶部。
var getIt = function () {
return this.x;
};
var obj1 = {
get : getIt,
x : 11
};
var obj2 = {
get : getIt,
x : 12
};
alert(obj1.get());
alert(obj2.get());
alert(obj1.get());