Javascript基于对象三大特征

Javascript基于对象三大特征

基本概述

    Javascript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation)、继承(inheritance )和多态(polymorphism )。只不过实现的方式不同,其基本概念是差不多的。其实除三大特征之外,还有一个常见的特征叫做抽象(abstract),这也就是我们在一些书上有时候会看到面向对象四大特征的原因了。

 

封装性

    封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。

 

案例:


	
		
	
	
	

PS:JS封装只有两种状态,一种是公开的,一种是私有的。


通过构造函数添加成员方法和通过原型法添加成员方法的区别

1、通过原型法分配的函数是所有对象共享的.

2、通过原型法分配的属性是独立.(如果你不修改属性,他们是共享)

3、建议,如果我们希望所有的对象使用同一一个函数,最好使用原型法添加函数,这样比较节省内存.

 

案例:

function Person(){
    this.name="zs";
    var age=20;
    this.abc=function(){
        window.alert("abc");
    }
    function abc2(){
        window.alert("abc");
    }
}

Person.prototype.fun1=function(){
    window.alert(this.name);//ok
    //window.alert(age);//no ok
    //abc2();//no ok
    this.abc();//ok
}
var p1=new Person();
p1.fun1();


特别强调:我们前面学习的通过prototype给所有的对象添加方法,但是这种方式不能去访问类的私有变量和方法。


继承性

    继承可以解决代码复用,让编程更加靠近人类思维。当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过继承父类中的属性和方法。

 

JS中实现继承的方式

1、对象冒充

案例:


	
		
	
	
	

2、通过call或者apply实现

案例:





小结:

1JS对象可以通过对象冒充,实现多重继承

2Object类是所有Js类的基类


多态性

JS的函数重载

    这个是多态的基础,在之前的Javascript入门已经说过了,JS函数不支持多态,但是事实上JS函数是无态的,支持任意长度,类型的参数列表。如果同时定义了多个同名函数,则以最后一个函数为准。

 

案例:





多态基本概念

    多态是指一个引用(类型)在不同情况下的多种状态。也可以理解成:多态是指通过指向父类的引用,来调用在不同子类中实现的方法。

 

案例:


总结:

   多态利于代码的维护和扩展,当我们需要使用同一类树上的对象时,只需要传入不同的参数就行了,而不需要再new 一个对象。



----------参考《韩顺平.轻松搞定网页设计(html+css+js)》


你可能感兴趣的:(Javascript)