2017-07-25 14:40:48 611浏览
面相对象有三大基本特征: 封装、继承、多态
【封装】
有两大好处。第一就是便于复用。 就像我们家里的微波炉一样,它烤完了一个面包又一个面包。它可以反复使用上万次。而你不需要每次去买一台新微波炉。这就叫做可复用。
第二就是隐藏细节,提升用户体验。拿苹果本来举例子,苹果的设计特点就是简洁大方。让人看着舒服。至于内部的构造如何,我们无从得知,也不需要知道。所有的细节都被一个银灰色的金属外壳封装了起来。
封装在代码层面的应用是很多的,举个例子:
var r01 = Math.random(); var r02 = Math.random(); var r03 = Math.random(); var r04 = Math.random();
//变量r01、r02、r03、r04都是随机数字 //我们利用random函数得到了一个随机数,但我们不关心实现的细节 |
【继承】
js的继承大致分为5种情况
▌继承的方式一
function Father(){
this.money = 1000000;
}
function Son(){
this.p = Father;
this.p();
delete this.p;
}
var s = new Son();
▌继承方式二:
function Father(){
this.money = 1000000;
}
function Son(){
Father.call(this);
}
但有时候参数太多:
function Father(p1,p2,p3,p4){
this.money = 1000000;
}
function Son(v1,v2,v3,v4){
Father.call(this, v1, v2, v3, v4);
}
▌继承方式三:
function Father(p1,p2,p3,p4){
this.money = 1000000;
}
function Son(v1,v2,v3,v4){
Father.apply(this, [v1, v2, v3, v4]);
}
可以再改造一下:
function Son(){
Father.apply(this, arguments);
}
▌利用prototype,继承方式四:
function Father(){ }
Father.prototype.talk = function(){ }
function Son(){ }
Son.prototype = new Father();
▌最常见的混合继承;
function Father(){
}
Father.prototype.liaomei = function(){
}
Son.prototype = new Father();
function Son(){
Father.apply(this,arguments);
}
【多态】
JS中没有多态的概念,多态是标准的面相对象语言例如JAVA、C++等编程语言,由于变量定义及对象有严格的类型区分,才导致出现了多态。JS由于是弱类型语言,因此不存在这一问题,所以没有