JavaScript对象及初识面向对象
第四章 JavaScript对象及初识面向对象
对象
- 回顾JavaScript数据类型
number(数值类型)
string(字符串类型)
boolean(布尔类型)
null(空类型)
undefined(未定义类型)
Object:一种复杂的数据类型,该类型实例化的对象是一组数据和功能的集合。
- 对象是什么
概念:在JavaScript中所有事物都是对象,如字符串,数字,数组,日期等。
对象是包含相关属性和方法的集合体
在JavaScript中,对象是拥有属性和方法的数据。属性是与对象相关的值,方法是能够在对象上执行的动作。
面向对象仅仅是一个概念或者编程思想而已,它不应该依赖于某个语言存在,JavaScript语言是通过一种叫作原型的方式来实现面向对象。
- 创建对象
js创建对象:
var 对象名={
属性名:值,
属性名:值,
方法名:function(){
方法体;
}
}
使用:对象名.方法名();
function aa(){
方法体;
}
- 自定义对象
var 对象名称=new Object();
- 内置对象
String(字符串)对象
Date(日期)对象
Array(数组)对象
Boolean(逻辑)对象
Math(算数)对象
RehExp对象
构造函数和原型对象
- 构造函数
- 给变量赋值(大部分要加参数)
特点:
1.和类名相同
2.new的时候自动调用
检测当前对象的构造函数是否是当前类所属的这个类的构造函数
constructor属性
对象.constructor
返回值是对象的构造函数
instanceof *******
实例对象 new 类名(); 每一个实例对象占有一个单独的内存空间
调用构函数的4个步骤:
(1) 创建一个新对象
(2) 将构造函数的作用域赋给新对象(this就指向这个新对象)
(3) 执行构造函数中的代码
(4) 返回新对象
- 原型对象
每一个函数都有prototype属性 这个属性的返回值是对象 这个对象就叫原型对象
这个原型对象拥有了构造函数的所有属性和方法,并且所有实例对象共享这些属性和方法
继承
- 原型链
原型链:一个原型对象是另一个原型对象的实例,
相关的原型对象层层递进 实例对象和原型对象构成的链条
继承 有两个构造函数
继承:其中一个原型对象=另一个实例对象
这个原型对象有了另一个实例对象的所有属性和方法
当前这个原型对象的实例对象有了他自己的属性和方法
等价于 当前对象有了父类的属性和方法
弊端:
当原型对象修改了父类的值之后
其他的实例对象调用的时候都是修改过的
解决方法:借用构造函数:
在子类构造函数中写一句:
父类.call(this,参数);
相当于吧父类的构造临时借给子类用
其他的实例对象不受影响
- 对象继承
借用构造函数:在子类型构造函数的内部调用父类型构造函数,即在子类型构造函数的内部通过apply()或call()方法调用父类型的构造函数,也可以在将来新创建的对象上执行构造函数。
apply([thisOjb[,argArray]])
call([thisOjb[,argl[,arg2[,[argN]]]]])
组合函数:有时也叫作伪经典继承,指的是将原型链和借用构造函数的技术组合到一块,从而发挥二者之长的一种继承模式。