js高級
今日所學摘要:
①js的預編譯:js很特別,在js代碼執行前會進行預編譯,預編譯的結果就是——變量提升。如下圖所示:
②js中的arguments,俗稱偽數組,不是真正的數組,但可以像數組一樣使用,里面存入的是傳入函數的形參。
③for...in用法:可以用來遍歷數組和對象,遍歷對象居多。對象拷貝時注意用hasOwnProperty方法
④prototype原型:分為兩類:(1)類里面有prototype屬性,可以用 ?? 類名.prototype.方法名? 來為這個類添加一個原型方法,每當為這個類創建一個對象時,該原型方法便存在于該對象的原型對象中。(2)對象里面有__proto__屬性,可以為對象添加原型方法和屬性,并且這種方式是共享的,成為原型共享,即同一個類的實例,其中一個添加了原型屬性和方法,該類的其他實例也會存在。
⑤js中的繼承:分為假繼承和真繼承
假繼承:用call()或apply()方法改變this指向,獲取父類中的構造函數,再運用for...in循環將父類的原型對象拷貝給子類
真繼承:第一步仍然是用call或apply改變this指向,第二部采用? 子類.prototype =Object.create(父類.prototype)
⑥js閉包,概念:函數內部可以調用函數外部的變量。
今天大概就是這些內容,明天繼續加油?。?!