循環對象爲dom時,保存dom對象的長度能夠提升瀏覽器性能(如今仍是的嘛?)瀏覽器
目前,我所說知道的兩種建立對象的方法,對象字面量和new Object。其中,對象字面量方法更簡單明瞭,另外一個緣由是它只是強調了該對象僅是一個可變哈希映射,而不是從對象中提取屬性和方法。與new Object相比,對象字面量沒有做用域解析,由於它可能創造了一個同樣的局部構造函數,解析器須要從調用Object的位置一直向上查找,直到找到object的全局構造函數。dom
var car = { goes: "far"} // 對象字面量發
//構造函數法
var car = new Object();
car.goes = far;
複製代碼
當一操做符調用構造函數時,函數內部將會發生如下狀況:函數
建立一個空對象而且this變量引用了該對象,同時還繼承了該函數的原型。性能
屬性和方法被加入到this引用的對象中。this
新建立的對象由this所引用,而且最後隱式地返回this(若是沒有顯式地返回其餘對象)。spa
var Person=function(name){ //使用對象字面量模式建立一個新對象 //var this=Object.create(Person.prototype);prototype
向對象添加屬性和方法
this.name=name;
this.say=function(){
return "Hello World!"
}
// return this;
複製代碼
}code
爲了解決實例化對象時,忘記寫new的缺點,並使得原型屬性可在實例對象中使用,那麼能夠考慮下面的方法,具體來講,能夠在構造函數中檢查this是否爲構造函數的一個實例,若是爲否,構造函數能夠再次調用自身,而且在此次調用中正確地使用new操做符:對象
function Waffle(){
if(!(this instanceof Waffle)){
return new Waffle();
}
this.tastes= "yummy";
}
Waffle.prototype.wantAnother = true;
var first=new Waffle(),
second=Waffle();
console.log(first.tastes;) //輸出"yummy"
console.log(second.tastes;)//輸出"yummy"
複製代碼
後續繼續補充!繼承