JS类中能模拟出依赖对象本身的可变的私有属性吗?
JS是轻量级语言,在类的概念上没有如Java那样严格意义上私有函数,公有函数,私有属性,公有属性。但是我们考虑到复用,仍然会希望能够模拟出这些特性。有关私有函数、公有函数的方法,其实蛮简单,就是把私有函数以变量的形式,扔到prototype的闭包中;公有函数则以返回的形式暴露在外面。
?
?
var me = new People({name:'L'});var you = new People({name:'J'});console.log(me.name);console.log(me.getName());console.log(you.name);console.log(you.getName());
?
然后你会发现,打印出来的都是 'undefined' 'J'。也就是说,原型的_name被最后一个创建的实例改掉了,原因嘛,就是因为_name在原型里,是所有实例共用的。。。
?
因此在JS的类中模拟私有属性是不成立的。忍受下洁癖,还是开放出来吧。
?