this
當該函數作爲構造函數調用時,可以通過使用立即調用的函數表達式(IIFE)來引用自身。
var cooking = (function() {
return new function() {
this.dessert = "Ice Cream";
this.numberOfPortions = 20;
this.doubleLunch = function() {
this.numberOfPortions = 40;
document.write(this.numberOfPortions);
};
}
})();
document.write(cooking.dessert);
DEMO:http://jsfiddle.net/fk4uydLc/1/
但是,您可以通過使用普通的舊JavaScript對象(POJO)實現相同的結果。
var cooking = (function() {
var obj = {};
obj.dessert = "Ice Cream";
obj.numberOfPortions = 20;
obj.doubleLunch = function() {
obj.numberOfPortions = 40;
document.write(obj.numberOfPortions);
};
return obj;
})();
document.write(cooking.dessert);
DEMO:http://jsfiddle.net/vmthv1dm/1/
如果你打算使用構造函數多次隨後的辦法@Quentin提到的是要走的路。
function Cooking() {
this.dessert = "Ice Cream";
this.numberOfPortions = 20;
this.doubleLunch = function() {
this.numberOfPortions = 40;
document.write(this.numberOfPortions);
};
}
var cooking = new Cooking();
document.write(cooking.dessert);
DEMO:http://jsfiddle.net/jsd3j46t/1/
絕對還有它賦值給一個變量是沒有意義的。只是'功能烹飪(){...}'更有意義。 – Jan
這也將它分配給一個變量。一般來說,我會建議通過匿名函數表達式的函數聲明。 – Quentin
@Quentin謝謝你的回答,但爲什麼有必要創建它的一個實例。例如,當我執行它顯示了數字7。是因爲這個函數不同於我的第一個? – GniruT