js原型繼承,聖杯模式繼承

2021-09-27 09:34:59 字數 1427 閱讀 6653

1.call()可以呼叫函式;

2.call()可以修改this指向,使用call()的時候,第乙個引數是修改後的this指向,引數2,引數3…使用逗號隔開;

function

fun(x, y)

var obj =

;//call()可以呼叫函式

fun.

call()

;// call() 可以改變這個函式的this指向 此時這個函式的this 就指向了obj這個物件

fun.

call

(obj,10,

20);

先定義乙個父建構函式

再定義乙個子建構函式

子建構函式繼承父建構函式的屬性(使用call方法改變this指向)

// 1. 父建構函式

function

father

(uname, age)

// 2 .子建構函式

function

son(uname, age, score)

// son.prototype = father.prototype; 這樣直接賦值會有問題,如果修改了子原型物件,父原型物件也會跟著一起變化

son.prototype =

newfather()

;// 如果利用物件的形式修改了原型物件,別忘了利用constructor 指回原來的建構函式

son.prototype.constructor = son;

var son =

newson

('小明',18

,100);

console.

log(son)

;

//第一種方法

function

inherit

( target , origin);f

.prototype = origin.prototype;

//不能與上邊一行互換位置

target.prototype =

newf()

;//要讓target的建構函式constructor歸位

target.prototype.constructor = target;

//使構造出的物件能夠找到自己超級父級是誰,就是真正繼承於誰

target.prototype.uber= origin.prototype;

}

//第二種使用立即執行函式

var inherit =

(function()

;//返回的匿名函式使用上邊區域性變數f,形成閉包,返回給inherit

return

function

(target,origin)}(

))

JS 聖杯模式(原型鏈繼承)

聖杯模式 為了son繼承father原型上的東西,還可以修改自己原型上的東西,對father原型不影響。function inherit target,origin 函式f作為乙個中間層,上連father,下連son,使兩函式互不干擾 f.prototype origin.prototype tar...

js繼承(一)原型繼承

正式開工了 繼承在js中有著很大的地位,同時理解起來也比較抽象,我將分幾篇部落格來記錄js的繼承。原型繼承 相當於將父類物件與子類物件打通橋梁,可以靈活實現追加屬性與行為 子類擁有父類的一切行為和屬性。特點 非常純粹的繼承關係,例項是子類的例項,也是父類的例項 父類新增原型方法 原型屬性,子類都能訪...

js繼承,原型鏈繼承

1 乙個型別的物件能夠訪問另外乙個型別的屬性和方法 2 類與類之間的關係 類就是眾多例項共有的屬性和方法的乙個抽象 function animal name animal.prototype.say function function dog 把子類的原型指向父類的例項 dog.prototype ...