我一直试图围绕
javascript函数和范围如何工作,这对我来说没有意义.有人可以解释为什么以下代码输出:’动物说喵’而不是’小猫说喵’?
(function($,exports){ var animal = function(){}; exports.Animal = animal; })(jQuery,window); (function($,Animal){ var kitty = new Animal; kitty.sayHi = function(){ console.log(this); console.log('says meow'); } $($.proxy(function(){ $('#js_test').click($.proxy(kitty.sayHi,kitty)); },kitty)) })(jQuery,Animal);
UPDATE
@FunkyFresh在注释中指出console.log在传递一个对象时调用toString,默认情况下返回对象的类型(animal).当我用上面的代码更新时
animal.prototype.name = 'Mammal';
在顶部的代码块中,和
kitty.name = 'Zax';