为了账号安全,请及时绑定邮箱和手机立即绑定

高程中静态私有变量调用出现了错误

高程中静态私有变量调用出现了错误

千巷猫影 2018-10-19 14:09:59
(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());


查看完整回答
反对 回复 2018-11-17
  • 1 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信