JS學習筆記

2021-10-02 15:02:51 字數 1601 閱讀 3598

首先我們要知道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...