1. 呼叫方法
let xw =
}let xh =
let xl =
xw.say();
// this還是原來的xw的
xw.say.
call
(xh)
;// this指向xh
xw.say.
(xl)
;// this指向xl
xw.say.
bind
(xh)()
;// this指向xh
2. 傳參方法
let xw =
}let xh =
let xl =
xw.say(
"實驗小學"
,"六年級");
xw.say.
call
(xh,
"實驗小學"
,"六年級");
xw.say.
(xl,
["實驗小學"
,"六年級"])
; xw.say.
bind
(xh,
"實驗小學"
,"六年級")(
);xw.say.
bind
(xl)
("實驗小學"
,"六年級"
);
bind()
和其他兩個方法的作用也是一致的,只是該方法會返回乙個函式,並且可以通過bind()
實現
手寫實現 call()
function.prototype.
mycall
=function
( context )
// 測試用例
const obj =
function
fn(name , age)
}let res = fn.
mycall
(obj ,
'll',25
);console.
log(res)
//
function.prototype.
=function
( context , args )
else
delete context.fn;
return result;
}// 測試用例
const obj =
function
fn(name , age)
}let res = fn.
(obj ,
['ll',25
]);console.
log(res)
//
手寫實現 bind()
function.prototype.
mybind
=function
( context )
// 2. 暫存this
const self =
this
;// 3. 獲取傳入的引數
// 拿到第一組引數,如果沒傳,是乙個空陣列
const args1 =
[...arguments]
.slice(1
);// 第二次呼叫bindfn
const
bindfn
=function()
return bindfn
}// 測試用例
const obj =
function
fn(name , age)
}let res = fn.
mybind
(obj)
('hh',30
);console.
log(res)
STRCPY,MEMSET,MEMCPY三者的區別
memset 用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為 或 0 例 char a 100 memset a,0 sizeof a memcpy 用來做記憶體拷貝,你可以拿它拷貝任何資料型別的物件,可以指定拷貝的資料長度 例 char a 100 b 50 memcpy...
View,Activity,Window三者的關係
在activity中,通過setcontentview就可以顯示xml的布局檔案了,也就是把乙個個view控制項組合在一起,首先,這個activity的方法setcontentview有三個過載的方法。public void setcontentview int layoutresid public...
Activity Window View三者的關係
首先分別介紹下這三者 然後一句話介紹下三者的關係 activity通過window來實現檢視元素的展示,window可以理解為乙個容器,盛放著乙個個的view,用來執行具體的展示工作。當我們執行程式的時候 在activity中呼叫attach,建立了乙個window 建立的window是其子類pho...