对象
创建对象
对象是包含相关属性和方法的集合体。
创建自定义对象的基本用法:
// 使用object对象的方式创建对象
var 对象名= new object();
对象名·属性="属性值";
对象名·方法 = function(){}
// 使用字面量赋值方式创建对象
var 对象名={
属性:"属性值”
方法:function(){}
构造函数和原型对象
构造函数
构造函数可以用来创建特定类型的对象。
构造函数是一个普通函数,使用 new操作符就能生成对象,
在构造函数内部使用 this 关键字,代表所要生成的对象。
构造函数始终都应该以一个大写字母开头。.
基本用法
function 构造函数(参数1,参数2,...){
this.新对象属性 = 参数;
this.新对象方法= function(){}
var 对象名 = new 构造函数(参数1,参数2,...);
consturctor 属性
在 JavaScript 中,constructor 属性用于返回对象的构造函数,其返回值是函数的引用,不是函数名。
基本用法
对象名.constructor
instanceof 运算符
JavaScript 中变量的类型判断常常使用 typeof 运算符,但使用 typeof 判断引用类型存储值时,无论引用的是什么类型的对象,它都返回 object。
ECMAScript 引入了另一个运算符 instanceof 来解决这个问题,instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。
基本用法
对象名 instanceof 类型
原型对象
在 JavaScript 中,每当定义一个对象(函数也是一个对象)的时候,对象中都会包含一些预定义的属性,其中每个函数对象都有一个 prototype 属性,这个属性指向函数的原型对象。JavaScript 的原型对象可以看作是一个模板,用于定义对象的基本属性和方法。当创建一个对象时,如果该对象所属的构造函数定义了原型对象,那么这个对象就会继承原型对象中的属性和方法
基本用法
构造函数名.prototype.属性 =“属性值";
构造函数名.prototype.方法=function(){}
继承
原型链
在 ECMAScript 中,实现继承主要是依靠原型链来实现的。一个原型对象是另一个原型对象的实例,相关的原型对象层层递进,就构成了实例与原型的链条,就是原型链。
基本用法
父构造函数.prototype = new 子构造函数();
原型链虽然很强大,可以用来实现继承,但是也存在问题:
对原型对象的修改会影响到所有通过该原型创建的对象
创建子类型时的实例时,不能向父类型的构造函数中传递参数
借用构造函数
借用构造函数又称为伪造对象或经典继承。
借用构造函数的基本思想是在子类构造函数中使用 ca11()或 apply()方法调用父类构造函数,并将子类实例作为参数传递给父类构造函数。
基本用法
// 应用某一对象的一个方法,用另一个对象替换当前对象。
apply([thisobj[,argArray]]);
// 调用一个对象的一个方法,以另一个对象替换当前对象。call([thisobj[,arg1[,arg2[,[,argN]]]]]);
借用构造函数可以用来实现继承,但是也存在问题:
只继承了父类构造函数的属性和方法,没有继承父类原型的属性和方法。
无法实现构造函数的复用。
组合继承
组合继承又称为经典继承,
组合继承是将原型链和借用构造函数的技术组合到一块,发挥二者之长的一种继承模式。组合继承的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。