面向對象面試
num 不是屬性,是私有做用域下的私有變量。數組
(1) 找到this 在調用方法時看方法前面的「.」是誰,this就是誰瀏覽器
(2) 替換this 將this換成你找到的那個結果函數
(3) 精確查找 用原型鏈查找模式去分析學習
3.關於構造函數的返回值問題this
構造函數也是函數,每一個函數都有返回值,構造函數返回的是this。prototype
上面的這種能夠經過.來實現的多個方法 咱們把他叫作鏈式寫法。對象
實現原理:每一個方法使用完畢以後,不只能夠獲得想要的結果,還須要把當前實例對象返回,才能夠實現鏈式寫法。遞歸
4.對象分析內存
之後咱們使用內置方法,出現內置方法報錯
若是是批量添加屬性,沒有改變原型的內存地址(瀏覽器開闢的)
若是是以對象形式添加,就會更改原型的內存地址,瀏覽器開闢的就被銷燬了。
6.怎樣給內置對象添加方法
若是給內置類的原型添加方法,使用對象形式添加,不起做用。
Array.prototype={sun:function...} xxx 錯的 瀏覽器會保護內置對象的原型內存地址,不讓人爲修改,只能使用批量的形式添加方法
Array.prototype.sun=function...
騰訊18年春招面試題
Jk.age++ 等價於 jk.age=jk.age+1 先經過jk.age查找私有的age屬性,沒有,再找公有的age屬性,有是20,而後加1爲21.再賦值給jk的私有屬性age。
Rs.aword.push(「oo」) 先rs查找私有的aword屬性,沒有,在查找公有的aword屬性,有,結果是數組,引用數據類型,又會開闢一個內存地址,存放數組,將內存地址賦值給aword,而後去給這個地址中的aword添加了一個oo的元素。Jk.aword查找私有的,沒有,再查找公有的,有,可是aword是內存地址,再向這個內存地址去查看這個數組,rs和jk查找的aword都是同一個內存地址的數組,因此一改則全改。
複習數組的方法
1.pop push shift unshift split
學習內置對象的方法
拷貝
嚴格的說這個就是將obj的內存地址賦值給obj2
藉助for in
function extend(oldobj,newobj){
for(var key in oldobj){
var item=oldobj[key];
if(item instanceof Array){ //數組
newobj[key]=[]
extend(item,newobj[key]) //遞歸
}else if(item instanceof Object){ //對象
newobj[key]={};
extend(item,newobj[key])
}else{ //基本類型
newobj[key]=item;
}
}
}