當乙個函式物件被建立時,function構造器產生的函式物件會執行類似這樣的**:
this.prototype = ;
當採用構造器呼叫模式,即使用new字首去呼叫乙個函式時,這將修改函式執行的方式。如果new運算子是乙個方法而不是乙個運算子,它可能會像這樣執行:
function.method('new', function());
構造器函式的缺陷:
在編寫構造器時使其接受乙個簡單的物件說明符可能會更加友好。那個物件包含了將要構建的物件規格說明。與其這樣寫
var myobject = maker(f,l,,m,s,c);
不如這麼寫:
var myobject = maker}
var mymammal = ,
says: function()
}
差異化繼承: 通過定製乙個新物件,指明它與所基於的基本物件的區別。
用處:對某種資料結構從其他資料結構繼承的情形。
var mycat = object.beget(mymammal);
mycat.name = 'henrietta';
mycat.saying = 'mm';
mycat.purr = function(n)
mycat.get_name = function()
構造乙個不需要new字首產生物件的函式,包括以下幾個步驟:
建立乙個新物件。
選擇性的定義私有例項變數和方法。這些就是函式通過var語句定義的普通變數。
給新物件擴充方法。擁有特權去訪問方法
返回新物件 。
var mammal = function(spec);
that.get_name = function();
that.says = function()
return that;
}
cat繼承mammal;
var cat = function(spec);
that.fire = function(event)
//呼叫乙個處理程式,如果該條目包含引數,那麼傳遞它們過去。否則,傳遞該事件物件,}}
return this;
};//註冊和繫結事件
that.on = function(type, method, parameters);
if(registry.hasownproperty(type))else
return this;
};return that;
}
js語言精粹
1 typeof null object 所以不能通過typeof object 判斷為物件 a 判斷為null的,直接 null b 判斷物件 typeof object 因為null為假 2 prototype和 proto 的概念 prototype是函式的乙個屬性 每個函式都有乙個proto...
讀js語言精粹收穫
1.js可以根據選擇跳出多層迴圈 在迴圈前加個標籤 label for var i 0 i 2 i 2.typeof運算子產生的值只有 number undefined string boolean es5的基礎資料型別少了乙個null function object 注 array和null結果都...
js語言精粹之值和引用
var a 2 varb a b是a的乙個副本 b a 2b 3 基本資料型別是值複製 varc 1,2,3,4 var d c d是 1,2,3,4 的乙個引用 d.push 5 c 1,2,3,4,5 d 1,2,3,4,5 復合型別是引用複製 c和d分別指向乙個 1,2,3,4 的兩個不同的引...