有人可以向我解释这种行为吗?
var obj = function()
{
var _bar = 10;
function i_bar(){return ++_bar;}
return {
bar : _bar,
i_bar: i_bar
}
}();
obj.bar // prints 10, OK
obj.i_bar() // prints 11, OK
obj.bar = 0 // prints 0, OK
obj.i_bar() // prints 12, NOK
由于唯一的变量是_bar
,最后obj.i_bar()
不应该打印1
而不是12
吗?
答案 0 :(得分:1)
您的bar
与i_bar
引用的内容不同。值类型不是引用,因此您将bar
复制到返回对象中,但它不是您的函数所引用的bar
。试试这个:
var obj = function()
{
var self = this;
function i_bar(){return ++self.bar;}
self.bar = 10;
self.i_bar = i_bar;
return self;
}();