网站制作学习网JS脚本→正文:javascript继承
字体:

javascript继承

JS脚本 2014/12/12 0:30:17  点击:不统计


 javascript可以说不是面向对象,但在javascript中一切可以认为是对象。在普通面向对象语言中有class类,并通过类可以实例化出对象。在javascript中没有类,那么在javascript怎么实现继承呢,我们学习一下javascript继承。

我们通过不同方式的继承例子来说明javascript的继承
(1)javascript原型链继承
function Site(){
this.name='网站制作学习网';
}
function Url(){
this.url ="http://www.forasp.cn";
}
Url.prototype = new Site();//在这里我们可以认为 site是父类,Url是子类,子类的属性继承了父类。
var u= new Url();
alert(u.name); //这样就继承了 Site 的name属性。如果有方法则同样的。
 
(2)javascript对象冒充继承
function Site(){
this.name='网站制作学习网';
}
function Url(){
this.url ="http://www.forasp.cn";
Site.call(this);//进行对象冒充调用 Site 为父类Url为子类
}
var u= new Url();
alert(u.name+u.url); //这样Url实际是冒充了Site
(3)原型式继承
function T(o){
    function Site(){
this.name = '网站制作学习网'; 
};   
    Site.prototype = o;
    return new Site();
}
function Url(){
this.url ="http://www.forasp.cn";
}
var temp = new Url();
var O = T(temp);
alert(O.name)
 
(4)javascript 寄生式继承
function T(o){
    function Site(){
this.name = '网站制作学习网'; 
};   
    Site.prototype = o;
    return new Site();
}
function C(o){
var t = T(o); 
t.Url = function(){
return "http://www.forasp.cn";
}
return t;
}
var o = {};
var O = C(o);
alert(O.name)
 
(5).javascript寄生组合继承 
//临时中转函数
function temptrans(o) {
function F() {}
F.prototype = o;
return new F();
}
function Father(){
this.name = '网站制作学习网'; 
}
function Son(){
this.url ="http://www.forasp.cn";
Father.call(this);
}
//寄生函数
function create(f, s) {
var f = temptrans(f.prototype);
f.constructor = s;
s.prototype = f;
}
create(Father,Son);
var s = new Son();
alert(s.name);//认真的看一遍代码你就会理解

转载%77%77%77请%2E%66%6F%72%61%73%70%2E%63%6E注明

·上一篇:highchart 环形图 生成环形图 >>    ·下一篇:刮刮卡代码,javascript刮刮卡,canvas刮刮卡 >>
推荐文章
最新文章