首先我們要知道function的預設指向是window,
function
test1()
當函式被呼叫的時候,他就會指向他呼叫的地方.(誰呼叫該方法就指向誰)
function
test1()
let person =
person.
testthis()
//test1的呼叫者是person,所以在這的this指向的是person
箭頭函式的this指向,找上一級呼叫者。
lett=
this
;//把obj所處的this快取到t
window.
fun1=(
)=>
let obj=
obj.
run(
)//run函式的呼叫者是obj
call方法:
語法:call
(thisobj,object)
//物件,引數集
定義:呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。
說明:call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。
如果沒有提供 thisobj 引數,那麼 global 物件被用作 thisobj。
var pet =
} pet.
speak
('speak');
// 結果:speak...
var dog =
//將this的指向改變成了dog
pet.speak.
call
(dog,
'speak');
//結果: speakwang
(thisobj,[argarray]
)//物件,陣列
定義:應用某一物件的乙個方法,用另乙個物件替換當前物件。
說明:
如果 argarray 不是乙個有效的陣列或者不是 arguments 物件,那麼將導致乙個 typeerror。
如果沒有提供 argarray 和 thisobj 任何乙個引數,那麼 global 物件將被用作 thisobj, 並且無法被傳遞任何引數。
function
fn(x,y)
var obj =fn(
1,2)
; fn.
(obj,[1
,2])
;bind只改變this指向,需要自己呼叫。
function
fn(x,y)
var obj =fn(
1,2)
; fn.
bind
(obj,1,
2)()
;
//立即執行函式的寫法
(function () )()
//es6流行之後,立即執行函式基本被淘汰掉,因為可以配合塊級作用域,去執行**,不會殘留全域性變數
js學習筆記
js開發中需要注意的問題。1 for迴圈優化 將for var i 0 i elements.length i 改為for var i 0,j elements.length i j i 採用這樣的方式可以避免每次迴圈的時候計算 elsments 的長度。2 字串拼接優化 將var text the...
js學習筆記
一.document物件 物件集合 all 對文件所有html元素的訪問 anchors 返回所有anchor物件引用 forms 返回所有form物件引用 images 返回所有image物件引用 links 返回所有area和link物件引用 物件屬性 body 訪問body元素 cookie ...
js學習筆記
基於json格式的協議的一些技巧備忘。這個msg1就是乙個協議,由於json格式符號太多,為了減少大量無用符號的傳播,目前能想到的就是如上的寫法,乙個匿名物件,由協議號加上陣列組成。獲取這個msg1 var d1 way 1 for var i in d1 cc.log i way 2 var ke...