1. 程式人生 > >JS筆記—關於類的靜態屬性的繼承(call方法的運用)

JS筆記—關於類的靜態屬性的繼承(call方法的運用)

網上看了不少,感覺廢話都太多,抓不住重點,下面單刀直入。

一、先弄清楚對於物件而言call()方法的語法

obj1.obj1's function.call(obj2,parameter1,parameter2,......)     

作用:讓obj2代替obj1呼叫原本屬於物件obj1的方法obj1's function,其中parameter1,parameter2......為呼叫obj1's function本身需要的引數。

要點:當obj1可省略,也就是說對於非物件的方法也可以用,只不過對於非物件的方法而言,用call沒有什麼意義,因為我們的初衷是改變物件方法中的this所指的實體。

 

二、利用call()實現類的靜態屬性繼承

    普遍語法上講,JS中並沒有類(新出的Class可能是,但是不是經典語法),這裡的“類”只是借用概念.

    下面先給例子

var class1 = function(x){
    this.a = x;
}

var class2 = function(x,y){
    class1.call(this,x);
    this.b = y;
}

var obj = class2(1,5);
console.log("obj.a:"+obj.a+",obj.b"+obj.b);

結果:
    obj.a:1,obj.b:5

   這樣做的好處很明顯,成功利用父類的建構函式,從而等價地實現了子類對於父類靜態屬性的繼承,實現了程式碼重用。

  OK,完工!