(function(){ var name="Jim"; function privateFunction(){ return name;
}
Person=function(){}
Person.prototype.publicGetName=function(){ return privateFunction();
} var person=new Person();
alert(person.publicGetName());
})()//返回Jim高程上说,初始化未经声明的变量,总是会创建一个全局变量,也就是上述代码中的Person=function()。因此,这里的Person就成了一个全局变量,能够在私有作用域之外被访问到。现在有个问题,既然这里的Person是一个全局变量,那把这行代码放到全局作用域会咋样呢?变更后的代码如下: var Person=function(){}
(function(){ var name="Jim"; function privateFunction(){ return name;
} // Person=function(){}
Person.prototype.publicGetName=function(){ return privateFunction();
} // var person=new Person();
// alert(person.publicGetName());
})() var person=new Person();
alert(person.publicGetName());再次调用,出现错误:Uncaught TypeError: (intermediate value)(...) is not a function求大神赐教,为啥还报错呀?不是说是全局变量嘛?
1 回答
慕森王
TA贡献1777条经验 获得超3个赞
老铁,下一行(
开头,上一号;
不能少,不信你加上分号再试试
var Person=function(){}; //分号
(function(){
var name="Jim";
function privateFunction(){
return name;
}
// Person=function(){}
Person.prototype.publicGetName=function(){
return privateFunction();
}
// var person=new Person();
// alert(person.publicGetName());
})()
var person=new Person();
alert(person.publicGetName());
添加回答
举报
0/150
提交
取消