(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
求大神赐教,为啥还报错呀?不是说是全局变量嘛?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
老铁,下一行
(开头,上一号;不能少,不信你加上分号再试试