閉包是由什麼構成
閉包=函式+詞法作用域詞法作用域:即以變數宣告定義的位置為參照,如果當前位置沒有定義,就會訪問父級定義的位置閉包應用場景和實現**廣義上閉包: 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.區域性變數 只存在於對它作出宣告的那個函式的內部,在那個函式外部是無法引用它的。作用域僅...