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 ...