讓我們說我有這樣的代碼:的javascript「這個」使用
var object1 = {};
object1.class1 = function() {
this.property1 = null;
this.property2 = 'ab';
}
在這種情況下,是什麼「這」代表什麼? object1或class1?每當我想在一個對象中定義一個類構造函數時,最好的方法是什麼?
讓我們說我有這樣的代碼:的javascript「這個」使用
var object1 = {};
object1.class1 = function() {
this.property1 = null;
this.property2 = 'ab';
}
在這種情況下,是什麼「這」代表什麼? object1或class1?每當我想在一個對象中定義一個類構造函數時,最好的方法是什麼?
對於class1
,因爲您無法創建object1類型的對象。
然而,如果代碼是:
function object1() {
this.class1 = function() {
this.property1 = null;
this.property2 = 'ab';
}
}
你可以有:
var obj = new object1();
obj.class1();
obj.property2; // => 'ab';
var cls = new obj.class1();
cls.property2; // => 'ab';
所以它可能取決於上下文。
也就是說,我已經看到'this'引用object1的情況。看來如果這些屬性已經存在於object1中,那麼class1只會變成一個單純的方法。 感嘆,只要有一種方法我可以肯定。 – Khoi 2010-08-19 09:13:59
@Khoi:號碼'this'指的是作爲'this'傳遞給方法的對象。如果你想,你可以使這個引用另一個完全不相關的對象,如:var test = {}; obj.class1.call(test);',那麼'test.property2'就是'ab'。 'this'僅依賴於javascript中的調用上下文,而不是其他任何內容。 – Mewp 2010-08-19 09:22:13
是的,解決了這個問題。我只需要明確定義調用上下文。謝謝! – Khoi 2010-08-20 00:16:55
如果你調用它像這樣:
object1.class1();
然後this
將參考object1
。
鏈接我覺得幫你:http://www.phpied.com/3-ways-to-define-a-javascript-class/ – 2010-08-19 08:39:06
我想我剛剛學到了東西:object1不能有另一個實例。謝謝! – Khoi 2010-08-19 08:55:43