Javascript类与构造函数实例源码介绍



Javascript类与构造函数实例源码介绍。1、类:相似内部状态和运动规律的实体的综合

2、类、方法、属性的关系
属性是数据,方法是函数,属性是类应该知道的事情,而方法是类准备完成的事情。系统应当由对象创建,对象拥有数据和功能,属性定义数据,方法定义功能
3、类的基本特性:
1)继承:不同类之间经常存在相似性,两个以上的类会经常共享相同的属性或方法。利用继承机制可以快速实现代码的复制和粘贴,以不需要重写代码。
2)封装:并不知道类型的内部机制和实现,也不想知道。我们只需要知道如何使用类即可。封装意味着我们能够以任何方式构建系统,如果需要,可以在日后再次修改内部结构,只要在系统中不同功能的组件间的接口未发生变化,那么系统中一个功能部分的改变不会对其他部分(系统)产生影响。
3)多态:描述了类的宽容性。可在不知道对象的类型时就与其进行协作
4、构造函数的特点:
1)构造函数只能够使用new运算符进行调用,不能使用小括号进行调用
2)构造函数内部通过this关键字,指代当前对象自身
3)构造函数内部必须通过点语法/点运算来声明和引用成员。内部可包含一般函数的执行语法。
4)传递给构造函数的是一个对新创建的空对象的引用,将该引用作为关键字this的值,而且构造函数还要对新创建的对象进行适当的初始化
5)构造函数只是初始化了特定的对象,但并不返回这个对象
6)构造函数没有返回值,只是初始化由this传递进来的对象并且什么都不返回。构造函数可以返回一个对象值,被返回的对象就成了new表达式的值,此情况中,this所引用的对象就被丢弃了。
5、构造函数原型模式:
对于可能会相互影响的原型属性,并希望动态传递参数的属性,则拆分出来使用构造函数模式进行设计,对于不需要个性、希望共享且不会相互影响的方法或属性,则单独使用原型模式来设计。
示例代码:(动态原型模式)

function Book(title,pages){

this.title = title;

this.pages = pages;

if(typeof Book.isLock == ‘undefined’){

//创建原型方法的“锁”,如果不存在则创建此方法

Book.prototype.what = function (){

alert(this.title+this.pages);

}

Book.isLock = true;//创建原型方法之后,把“锁”锁上


}

}

示例代码:(构造函数原型模式)

 

function Book(title,pages){

this.title = title;

this.pages = pages;

}

Book.prototype.what = function (){

alert(this.title+this.pages);

}

关于动态原型模式和构造函数原型模式的比较:性能上是等价的,但是使用最为广泛的是构造函数原型模式