保持对象成员私有

来源:互联网 发布:软件行业就业形势 编辑:程序博客网 时间:2024/05/20 06:10

可扩展的JavaScript对象

JavaScript面向对象的一个缺陷就是与Java和C++这样的语言不通,它们是基于类和类实例的。而JavaScript是基于原型继承的。所谓原型继承相当于基于已有对象的新实例来进行,而不是通过一个类的实例来实现。
原型扩展通过以新的属性和方法来扩展一个已有的对象来进行,而不是通过类继承来扩展。
基于原型继承的优点:不必先创建类,然后再创建应用程序,开发者可以关注与创建应用程序,然后通过操作来派生对象框架。

保持对象成员私有

问题:想要保持一个或多个对象的属性私有,而可以在对象实例之外访问。
解决方案:创建私有属性的时候,不要对成员使用this关键字

function Tune(song,artist){  var title = song;  this.concat = function(){    return title + " " + artist;  }}var happysong = new Tune("Putting on the Ritz","Ella Fitzgerald");console.log(happysong.title);console.log(happysong.concat());happysong.title = "testing";//覆盖私有属性console.log(happysong.title);console.log(happysong.concat());//局部变量优先级更大//输出undefined"Putting on the Ritz Ella Fitzgerald""testing""Putting on the Ritz Ella Fitzgerald"

其中的concat方法,通过this暴露给外部,这种方法称之为特权方法。
注意:只有在构建一个对象的时候,能够生产私有属性和特权方法,而公有成员随时可以添加。

原创粉丝点击