【精选】Javascript 面向对象编程(一):封装.pdfVIP

  • 1
  • 0
  • 约4.28千字
  • 约 6页
  • 2017-12-07 发布于贵州
  • 举报

【精选】Javascript 面向对象编程(一):封装.pdf

【精选】Javascript 面向对象编程(一):封装

Javascript ⾯向对象编程 (⼀):封装 学习Javascript ,最难的地⽅是什么? 我觉得,Object (对象)最难。因为Javascript的Object模型很独特,和其他语 都 不⼀样,初学者不容易掌握。 下⾯就是我的学习笔记,希望对⼤家学习这个部分有所帮助。我主要参考了以下两本 书籍: 《⾯向对象的Javascript》 (Object-Oriented JavaScript ) 《Javascript⾼级程序设计 (第⼆版)》 (Professional JavaScript for Web Developers, 2nd Edition) 它们都是⾮常优秀的Javascript读物,推荐阅读。 笔记分成三部分。今天的第⼀部分是讨论封装 (Encapsulation ),后⾯的第⼆部分 和第三部分讨论继承 (In eritance )。 ============================ Javascript ⾯向对象编程 (⼀):封装 作者:阮⼀峰 Javascript是⼀种基于对象 (object-based )的语 ,你遇到的所有东西⼏乎都是对象。 但是,它又不是⼀种真正的⾯向对象编程 (OOP )语 ,因为它的语法中没 有class (类)。 那么,如果我们要把属性 (property )和⽅法 (met od ),封装成⼀个对象,甚⾄ 要从原型对象⽣成⼀个实例对象,我们应该怎么做呢? ⼀、 ⽣成实例对象的原始模式 假定我们把猫看成⼀个对象,它有名字和颜⾊两个属性。   var Cat = {     name : ,     color :   } 现在,我们需要根据这个原型对象的规格 (sc ema ),⽣成两个实例对象。   var cat 1 = {}; // 创建⼀个空对象     cat 1.name = ⼤⽑; // 按照原型对象的属性赋值     cat 1.color = 黄⾊;   var cat2 = {};      = ⼆⽑;     cat2.color = ⿊⾊; 好了,这就是最简单的封装了,把两个属性封装在⼀个对象⾥⾯。但是,这样的写法 有两个缺点,⼀是如果多⽣成⼏个实例,写起来就⾮常⿇烦;⼆是实例与原型之间, 没有任何办法,可以看出有什么联系。 ⼆、 原始模式的改进 我们可以写⼀个函数,解决代码重复的问题。   function Cat(name ,color) {     return {       name:name ,       color:color     }   } 然后⽣成实例对象,就等于是在调⽤函数:   var cat 1 = Cat(⼤⽑,黄⾊);   var cat2 = Cat(⼆⽑,⿊⾊); 这种⽅法的问题依然是,cat1和cat2之间没有内在的联系,不能反映出它们是同⼀ 个原型对象的实例。 三、 构造函数模式 为了解决从原型对象⽣成实例的问题,Javascript提供了⼀个构造函数 (Constructor ) 模式。 所谓构造函数 ,其实就是⼀个普通函数,但是内部使⽤了this变量。对构造函数使 ⽤new运算符,就能⽣成实例,并且this变量会绑定在实例对象上。 ⽐如,猫的原型对象现在可以这样写,   function Cat(name ,color){     t =name;     t is.color=color;   } 我们现在就可以⽣成实例对象了。   var cat 1 = new Cat(⼤⽑,黄⾊);   var cat2 = new Cat(⼆⽑,⿊⾊);   alert(cat 1.name); // ⼤⽑   alert(cat 1.color); // 黄⾊ 这时cat1和cat2会⾃动含有⼀个constructor属性,指向它们的构造函数。   alert(cat 1.constructor == Cat); //true   ale

文档评论(0)

1亿VIP精品文档

相关文档