加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

Javascript担任汇总

发布时间:2018-10-05 08:19:30 所属栏目:创业 来源:站长网
导读:本文是我在看完《 Java script 王者回来》后的清算总结,文章具体章节在 第21章 P537 担任一样平常要实现以下三层寄义: 1)子类实例可以共享父类的要领; 2)子类可以包围父类的要领可能扩展新的要领; 3)子类和父类都是子类实例的范例。 一、结构担任法 子类
本文是我在看完《Javascript 王者回来》后的清算总结,文章具体章节在 第21章 P537

担任一样平常要实现以下三层寄义:

1)子类实例可以共享父类的要领;

2)子类可以包围父类的要领可能扩展新的要领;

3)子类和父类都是子类实例的范例。

一、结构担任法

子类中挪用父类的结构函数来维护的,该担任法能实现多重担任,但只能担任父类的共有要领,无法担任静态要领,并且不能用instanceof来验证实例。

function a(){
this.say=function(){
alert("happy new year!");
}
}

function b(){
a.apply(this,arguments);
}

a.prototype.fuck=function(){
alert("%^&%^&%&^%&");
}

var oB=new b();
alert(oB instanceof a);// false
oB.say(); // happy new year
oB.fuck(); // 读不到

二、原型担任法/经典担任法

该担任法是通过复制已经存在的原型工具来实现举动重用,让工具实例共享原型工具的属性。支持多重担任,担任原型静态要领,能用instanceof来验证实例。

function a(){
this.say=function(){
alert("happy new year!");
}
}

function b(){}

a.prototype.fuck=function(){
alert("%^&%^&%&^%&");
}

a.prototype.z=123;
b.prototype=new a();

var oB=new b();
alert(oB instanceof a); // true
alert(oB.z); // 123
oB.say(); // happy new year
oB.fuck(); // %^&%^&%&^%&

三、实例担任法/寄生结构函数模式

结构法不能担任范例的静态要领,原型担任得不完美(某些焦点工具的不行列举要领不能担任),而实例担任法能对原生焦点工具可能DOM工具举办担任,它通过在范例中结构工具并返回的步伐来实现担任,因此instanceof验证会是false,不支持多重担任。

function a(){
var oA=new Array();
oA.say=function(){
alert("hello A!");
}
return oA;
}

var obj=new a();
alert(obj instanceof a); // false
obj.say();

四、拷贝担任法

该要领通过拷贝基类工具的全部可列举属性和要领来模仿担任,因此它可以模仿多担任,但不能列举的就无法担任;它可以担任父类的静态要领;

function a(){
this.num=123;
this.say=function(){
alert("happy new year!");
}
}

function b(){
this.extends=function(obj){
for(each in obj){
this[each]=obj[each];
}
}
}

var oB=new b();
oB.extends(new a());

alert(oB instanceof a); // false
alert(oB.num); // 123
oB.say(); // happy new year

五、殽杂担任法

顾名思义就是把上面几种担任法综合起来,取长补短,让担任更完美。常见的有 结构+原型担任:伪经典担任

function a(){
this.num=123;
this.say=function(){
alert("happy new year!");
}
}

function b(){
a.apply(this);
}

b.prototype=new a();
b.prototype.z=123;

var oB=new b();
alert(oB instanceof a); // true
alert(oB.num); // 123
oB.say(); // happy new year

六、各类担任法的优弱点

Javascript担任汇总

文章来历:http://blog.sina.com.cn/s/blog_74d6cedd0100z7z3.html

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读