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

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


千巷猫影
浏览 467回答 1
1回答

慕森王

老铁,下一行(开头,上一号;不能少,不信你加上分号再试试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());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript