- 1
- 0
- 约4.28千字
- 约 6页
- 2017-12-07 发布于贵州
- 举报
【精选】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
您可能关注的文档
- 【精选】html5动态图表FineReport搭建物流报表决策平台的解决方案.pdf
- 【精选】html习题(答案).doc
- 【精选】Huawei AR150&200系列企业路由器产品 详版彩页.pdf
- 【精选】HTQ2008-2009学年湖北省武汉市江岸区七年级(上)期末数学试卷.pdf
- 【精选】HUGIN软件培训教程介绍-2012.pdf
- 【精选】Human Resource Management.ppt
- 【精选】HyperMesh一些常见问题的解答.pdf
- 【精选】html5培训入门教程视频.pdf
- 【精选】HY5900消防电源监控壁挂使用说明书.pdf
- 【精选】hypermesh网格划分总结.pdf
原创力文档

文档评论(0)