今天刚遇到的,贴上代码
function Foo() { var i = 0; return function() { console.log(i++); } } var f1 = Foo(), f2 = Foo(); console.log(f1()); console.log( f1()); console.log(f2());//function 是一个新对象。 console.log("---------"); var tes={ count:0, add: function () { return this.count++; } } var ff1=tes;//对象的数据存在堆中 var ff2=tes; console.log(ff1.add()); console.log(ff1.add()); console.log(ff2.add());
首先,function那一段 输出的结果是 0 1 0
object那一段输出的结果是 0 1 2
我前面转载的一篇日志中有提到, function 会新开一个内存,而对象则会引用(引用数据存放在堆中,与原始值如var i =1不同),所以ff2 与ff1指向同一个对象,而f1与f2是两个不同的对象,都有自己的function。
关于对象: http://www.cnblogs.com/fool/archive/2010/10/07/1845226.html