我试图理解为什么其中一个版本可以工作而另一个没有。为什么做出getConfigFails
作业是非法的?与闭包共享构造函数参数
var MyClass = (function(){
var _config;
function MyClass(config){
_config = config;
}
MyClass.prototype.getConfigWorks = function(){
_config.getConfigWorks();
}
//Uncaught TypeError: Cannot read property 'getConfigFails' of undefined
MyClass.prototype.getConfigFails = _config.getConfigFails;
return MyClass;
})();
var myClass = new MyClass({
getConfigWorks:function(){
console.log('no errors here');
},
getConfigFails: function(){ console.log('fail')}
});
console.log(myClass);
在'MyClass.prototype.getConfigFails = _config.getConfigFails;'处设置一个断点,然后检查'_config'的值。 –
然后灯泡亮起。闭包立即执行,真正的构造函数尚未被调用,所以它的参数是未定义的。 – wootscootinboogie