国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js封裝可使用的構造函數繼承用法分析

2024-05-06 16:15:25
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了js封裝可使用的構造函數繼承用法,實例分析了使用屬性拷貝來實現拷貝繼承的技巧,需要的朋友可以參考下
 

本文實例講述了js封裝可使用的構造函數繼承用法。分享給大家供大家參考。具體如下:

先來看下面這段代碼

(YUI)庫所用的方法:

復制代碼代碼如下:
function extend(Child, Parent) {

 

    var F = function(){};
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.uber = Parent.prototype;
}

 

另外還有一種拷貝繼承方法,屬性拷貝:

這種方法與之前的不同,由于已經完成對child的原型進行擴展,不需要再重置child.prototype.constructor屬性了,因為它不會再被覆蓋。

與之前的方法相比,這個方法在效率上顯然略孫一籌。因為這里執行的是對子對象原型的逐一拷貝。而非簡單的原型鏈查詢。

這種方式僅適用只包含基本數據類型的對象,所有的對象類型包括函數和數組,都是不可復制的,他們只支持引用傳遞。

復制代碼代碼如下:
function extend2(Child, Parent) {
    var p = Parent.prototype;
    var c = Child.prototype;
    for (var i in p) {
      c[i] = p[i];
      }
    c.uber = p;
}

 

var Shape = function(){}
var TwoDShape = function(){}
Shape.prototype.name = 'shape';
Shape.prototype.toString = function(){
 return this.name;
}
extend2(TwoDShape,Shape);
var t = new TwoDShape();
t.name
//-->"shape"
t.toString();
//-->"shape"
TwoDShape.prototype.name = 'TwoDShape';
t.name
//-->"2d shape"
t.toString();
//-->"2d shape"

TwoDShape.prototype.toString === Shape.prototype.toString
//-->true
TwoDShape.prototype.name === Shape.prototype.name
//-->false

 

希望本文所述對大家的javascript程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 温宿县| 沙田区| 缙云县| 阿合奇县| 滨州市| 剑阁县| 姚安县| 壤塘县| 新竹县| 建德市| 桂东县| 辉南县| 泸溪县| 灌云县| 饶阳县| 白山市| 陇川县| 永州市| 晋州市| 新沂市| 星座| 阳信县| 长葛市| 台山市| 巴东县| 玉田县| 枝江市| 房产| 周宁县| 旺苍县| 丹巴县| 资源县| 布拖县| 屯昌县| 沂源县| 卢龙县| 淮北市| 涟源市| 嘉鱼县| 合作市| 丹东市|