(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
求大神赐教,为啥还报错呀?不是说是全局变量嘛?
慕森王
相关分类