js基礎之閉包與繼承

2021-10-24 06:16:34 字數 1888 閱讀 9354

閉包是由什麼構成

閉包=函式+詞法作用域詞法作用域:即以變數宣告定義的位置為參照,如果當前位置沒有定義,就會訪問父級定義的位置

廣義上閉包: var a=1000; function fn1() fn1()

特點:長期駐留記憶體

閉包應用場景和實現**
//求和

function makeadd(x)

}//設定字型大小

function setfontsize(size)

}//迴圈表單

function makehelp(help)

}function init() ,,,

]//動態繫結onfocus事件

for(var i=0;i閉包優點和缺點

1.長期駐留記憶體,可以快取資料

2.可以隔離作用域,避免全域性汙染

1、原型鏈是js特有的一種繼承機制

2、原型鏈會涉及到___proto___,prototype

3、原型鏈的頂端就是null

4、應用場景:繼承

5、優點:把相同或類似的方法寫在原型上,方便例項化物件復用

缺點:不好理解,通常只前端人才理解

6、es6推出class extends來實現繼承

1.繼承是物件導向開發思想的特性之一

2.面試物件的三大特點:封裝,繼承,多型

3.繼承主要分es5和es6的繼承方式

es5的繼承–主要通過函式實現類

原型鏈繼承

//建立乙個父類

function parent()

parent.prototype.getname=function()

//建立乙個子類

function child()

//子類的原型等於父類的例項化物件

child.prototype=new parent();

var c1=new child()

缺點:

1.不能傳參

沒有解決物件引用問題

借用建構函式繼承

//建立乙個父類

function parent(name)

parent.prototype.getname=function()

//建立乙個子類

function child(name)

缺點:不能繼承父類方法

組合繼承=原型鏈繼承+借用建構函式繼承

//建立乙個父類

function parent(name)

parent.prototype.getname=function()

var p1=new parent();

p1.getname();

//建立乙個子類

function child(name)

child.prototype=new parent();

var c1=new child()

c1.getname()

優點:即能繼承父類的原型方法,也能傳遞引數屬性

es6繼承

通過class,extends,super實現 //繼承必須要寫super

//建立乙個父類

class parent

getname()

}//建立乙個子類

class child extends parent

getvalue()

}

JS 繼承和閉包

一 原型鏈進行繼承 1.js的繼承主要依靠原型鏈來實現,使函式的原型指向另一函式的例項,依次來完成繼承,其實質就是重寫原型物件。繼承後屬性和方法的依照原型鏈進行搜尋,1 先在例項中搜尋,2 搜尋subtype.prototype,3 搜尋supertype.prototype,直到找到該方法或者該屬...

JS基礎 閉包

注 自由變數是既不是在本地宣告又不作為引數傳遞的一類變數。function a return b var b a b hello closure 定義乙個函式a a中定義了函式b a中返回b 執行a 把a的返回結果賦值給變數b 執行b 閉包會在父函式外部,改變父函式內部變數的值。所以,如果你把父函式...

JS基礎 變數 閉包

1.變數的作用域 變數可以是全域性的,也可以是區域性的,在談論全域性變數和區域性變數之間的區別時,我們其實是在討論變數的作用域 scope i.全域性變數 可以在指令碼的任何位置被引用。作用域是整個指令碼。ii.區域性變數 只存在於對它作出宣告的那個函式的內部,在那個函式外部是無法引用它的。作用域僅...