求下面两段代码怎么理解?
!function(global){ //用函数包裹以防止基类的变量和函数在外部被更改
function DetectorBase(config)
{
if(!this instanceof DetectorBase){
throw new Error("Do't invoke without new.");
}
this.config = config;
this.analyze();
}
DetectorBase.prototype.detect = function(){
throw new Error("not implemented");
}
如上所示,就是老师前2段代码,没理解,第一段代码在function DetectorBase(){}外层添加了立即执行函数,按照注释:用函数包裹以防止基类的变量和函数在外部被更改,为什么这么说?不是说函数内部实现的属性和方法都属于局部变量离开这个函数都会销毁,为什么还要额外在外层添加这个立即执行函数?
问题二;既然是立即执行函数函数其结构应为(function(参数){//do sth})(),为什么没有圆括号?
问题三:对于立即执行函数里的参数global是干什么用的,不添加该参数会怎样?
问题四:
DetectorBase.prototype.detect = function(){
throw new Error("not implemented");
}
这个抛出是为了什么?后边的错误抛出全是为了如果不是构造器new出来的新对象,则抛出错误;此处的抛出错误是为了什么?