AngularJS系列之JavaScript繼承

2021-07-24 09:46:59 字數 1785 閱讀 3337

所有開發者定義的類都可作為基類。本地類和宿主類不能作為基類。建立的子類將繼承超類的所有屬性和方法,包括建構函式及方法的實現。子類可直接訪問這些方法。子類還可新增超類中沒有的新屬性和方法,也可以覆蓋超類的屬性和方法。

建構函式使用 this 關鍵字給所有屬性和方法賦值(即採用類宣告的建構函式方式)。因為建構函式只是乙個函式,所以可使 classa 建構函式成為 classb 的方法,然後呼叫它。classb 就會收到 classa 的建構函式中定義的屬性和方法。例如,用下面的方式定義 classa 和 classb:

function classa(scolor) ;

}function classb(scolor)

call() 方法是與經典的物件冒充方法最相似的方法。它的第乙個引數用作 this 的物件。其他引數都直接傳遞給函式自身。

function saycolor(sprefix,ssuffix) ;

var obj = new object();

obj.color = "blue";

saycolor.call(obj, "the color is", "a very nice color indeed.");

function classb(scolor, sname) ;

}

function classb(scolor, sname) ;

}

這是針對函式字面量的方法。

prototype 物件是個模板,要例項化的物件都以這個模板為基礎。總而言之,prototype 物件的任何屬性和方法都被傳遞給那個類的所有例項。原型鏈利用這種功能來實現繼承機制。

function classa() 

classa.prototype.color = "blue";

classa.prototype.saycolor = function () ;

function classb()

classb.prototype = new classa();

這是針對物件字面量的方法。

var student1=;

console.log(student1);

var student2=;

console.log(student2.name+","+student2.hobby);

這種繼承方式使用建構函式定義類,並非使用任何原型。物件冒充的主要問題是必須使用建構函式方式,這不是最好的選擇。不過如果使用原型鏈,就無法使用帶引數的建構函式了。

function classa(scolor) 

classa.prototype.saycolor = function () ;

function classb(scolor, sname)

classb.prototype = new classa();

classb.prototype.sayname = function () ;

var obja = new classa("blue");

var objb = new classb("red","john");

obja.saycolor(); //輸出 "blue"

objb.saycolor(); //輸出 "red"

objb.sayname(); //輸出 "john"

AngularJS系列之常用指令

angularjs 指令是擴充套件的 html 屬性,帶有字首 ng 指令初始化乙個 angularjs 應用程式。ng init指令初始化應用程式資料。ng model指令把元素值 比如輸入域的值 繫結到應用程式。下面給乙個例子綜合的介紹一下這三個指令的用法 姓名 你輸入的為 執行這個程式你會發現...

jav學習之 IO流

1.流的分類 按照資料流向的不同 輸入流 輸出流 按照處理資料的單位的不同 位元組流 字元流 處理的檔案文字 按照角色的不同,節點流 直接作用於檔案 處理流 2.io的體系 抽象基類 節點流 檔案流 緩衝流 處理流的一種 inputstream fileinputstream bufferedinp...

JAV設計模式系列 介面卡模式

我的膝上型電腦的工作電壓是20v,而我國的家庭用電是220v,如何讓20v的膝上型電腦能夠在220v的電壓下工作?答案是引入乙個電源介面卡 ac adapter 俗稱充電器或變壓器,有了這個電源介面卡,生活用電和膝上型電腦即可相容,如圖所示 在軟體開發中,有時也存在類似這種不相容的情況,我們也可以像...