我一直试图围绕
javascript函数和范围如何工作,这对我来说没有意义.有人可以解释为什么以下代码输出:’动物说喵’而不是’小猫说喵’?
@H_404_2@(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).当我用上面的代码更新时
@H_404_2@animal.prototype.name = 'Mammal';在顶部的代码块中,和
@H_404_2@kitty.name = 'Zax';