js中期总结
js中級(jí)總結(jié)
this問(wèn)題;
this是JavaScript的關(guān)鍵字? ? ? 用途:指向某一個(gè)對(duì)象
如何判斷this的指向
函數(shù)內(nèi):兩種情況:1.以函數(shù)形式調(diào)用(不帶 . 指向window )
2.以方法形式調(diào)用(帶 .? this指向 . 前面的)
? ?函數(shù)外:this指向window
1.自調(diào)用函數(shù)內(nèi)this都是window? ?
2.定時(shí)器this指向window
3.事件里面的this 指向觸發(fā)事件的元素
4.構(gòu)造函數(shù)里this指向他的實(shí)例(子對(duì)象)
怎樣替換函數(shù)內(nèi)的this?
1.call()? ? ? ? ? ? ? ?替換.前面的this并執(zhí)行那個(gè)函數(shù)
2.apply()
3.bind()??
A.fn.call(B,5)? B取代fn中的this,并調(diào)用fn()
call和apply,bind只能是函數(shù)(方法)內(nèi),或者是函數(shù)對(duì)象
call前面對(duì)象必須是函數(shù)對(duì)象
var a=45;
var b={
a:12
}
function fn(){
console.log(this.a)
}
fn.call(b)
面向?qū)ο?#xff1a;
以對(duì)象的方法來(lái)寫(xiě)業(yè)務(wù)邏輯
1.單例模式? ?var obj={}
2.工廠模式? ? function fn(){
var obj={}
return obj
}
3.構(gòu)造函數(shù)? (三個(gè)特點(diǎn) : 1.函數(shù)名首字母大寫(xiě)? ? ?2.函數(shù)的屬性前面加this? ? 3.函數(shù)調(diào)用new調(diào)用)
function Person(name){
this.name=name
}
var zhang=new.Person("zhang")
1.每個(gè)構(gòu)造函數(shù)天生自帶一個(gè)prototype的屬性,叫原型 他是一個(gè)對(duì)象有放父類(lèi)也繼承的屬性
2.函數(shù)內(nèi)的屬性子對(duì)象天生就繼承的,不需要任何操作
3.prototype上的屬性是繼承給子對(duì)象的,子對(duì)象必須通過(guò)__proto__來(lái)查找
4.每個(gè)子對(duì)象都有一個(gè)__proto__它指向父類(lèi)的原型
(注意的兩個(gè)點(diǎn):1.子類(lèi)必須通__proto__查找? ? ?2.父類(lèi)通過(guò)prototype向下繼承)
原型鏈:
子對(duì)象在操作個(gè)屬性時(shí),首先看這個(gè)屬性是私有的,有就直接使用,沒(méi)有通過(guò)__proto__向子對(duì)象父類(lèi)查找,父類(lèi)有就使用,沒(méi)有就像父類(lèi)的__proto__繼續(xù)向上查找,直到基類(lèi)object ,如果基類(lèi)沒(méi)有就是undefined
作用域和作用域鏈
作用域:
瀏覽器? 客戶端給javascript(簡(jiǎn)稱js)生存環(huán)境
js代碼在執(zhí)行前,瀏覽器會(huì)給js一個(gè)生存環(huán)境window,他會(huì)分成兩個(gè)模塊,一個(gè)叫內(nèi)存模塊,一個(gè)叫執(zhí)行模塊 ,內(nèi)存模塊在代碼執(zhí)行前就完成了,有var function 的關(guān)鍵字 每存放一個(gè)變量就會(huì)生成一個(gè)內(nèi)存地址;
在執(zhí)行模塊 如:a=12;? 先通過(guò)內(nèi)存地址查找有沒(méi)有a,有就直接賦值,沒(méi)有就是undefined? ?這種查找機(jī)制就是作用域鏈
賦值:(賦值都是在執(zhí)行模塊)
1.基本數(shù)據(jù)類(lèi)型就直接賦值
2.引用數(shù)據(jù)類(lèi)型將內(nèi)存地址賦給變量
引用數(shù)據(jù)類(lèi)型和基本數(shù)據(jù)類(lèi)型 本質(zhì)區(qū)別
基本數(shù)據(jù)類(lèi)型在賦值的時(shí)候,就是簡(jiǎn)單的操作值;
引用數(shù)據(jù)類(lèi)型,在賦值的時(shí)候把內(nèi)存地址賦值給變量,在操作引用數(shù)據(jù)類(lèi)型的時(shí)候,首先通過(guò)內(nèi)存地址去找里面的東西,然后操作
引用數(shù)據(jù)類(lèi)型在賦值的時(shí)候首先開(kāi)辟一個(gè)堆內(nèi)存,存放里面的代碼塊然后把內(nèi)存地址賦值給變量,在操作這個(gè)變量時(shí)候會(huì)通過(guò)內(nèi)存地址去查找,然后修改里面的東西
引用數(shù)據(jù)類(lèi)型:object? ?array? ? function? ?前兩個(gè)都是以鍵值對(duì)的形式存放,而后一個(gè)以字符串的形式存放
轉(zhuǎn)載于:https://www.cnblogs.com/diwangkaige/p/10038196.html
總結(jié)
- 上一篇: Disconf 学习系列之全网最详细的最
- 下一篇: 【洛谷习题】填涂颜色