面向对象
面向过程和面向对象
对于面向思想,我们扮演是执行者,凡是都要靠自己完成,对于面向对象思想,我们扮演的是指挥者,只要找到相应的对象,让他们帮我们做具体的一些事情。
面向对象的特征
面向对象的特征概括为封装性、继承性和多态性。
封装性
封装指的隐藏内部的实现细节,之对外开放操作接口。
继承性
继承是指一个对象继承另一个对象的成员,从而在不改变另一个对象的前提下进行扩展。
多态性
多态指的同一个操作作用于不同的对象,会产生不同的操作结果。
自定义对象
对象的定义
在JavaScript中,对象的定义是通过“{}”语法实现的,对象的成员以键值对的形式存放在{}中,多个成员之间使用逗号分隔开。
访问对象成员
在创建对象后,通过”.”可以访问对象的成.在JavaScript中的对象具有动态特征,如果一个对象没有成员,用户可以手动赋值的方法或属性来添加成员。
对象成员遍历
使用for…in语法不仅可以遍历数组元素,还可以遍历对象的成员。
深拷贝与浅拷贝
在实际开发中,浅拷贝可以节省内存开销。深拷贝(deep copy)即真正创建一个对象的副本。
构造函数
为什么使用构造函数
通过字面量的方式创建对象,这种方式简单,但是存在有一些缺点,例如,当创建一组具有相同特征的对象时,无法通过代码指定这些对象应该具有哪些相同的成员。
JavaScript内置的构造函数
JavaScript提供Object、String等构造函数,通过“new构造函数名()”即可创建对象,人们习惯将使用new关键字创建对象的过程称为实例化,实例化后得到的对象称为构造函数的实例。
自定义构造函数
注意事项
* (1)构造函数的命名推荐采用帕斯卡命名规则,及所有单词首字母大写*
* (2)在构造函数内部,使用this来表示刚刚创建的对象*
私有成员
在构造函数中,使用var的关键字定义的变量成为私有成员,在实例对象后无法通过“对象成员”的方式进行访问,但是私有成员可以在对象的成员方法中访问。
函数中的this指向
在this指向中,重点是this指向和更改this指向。