我對在構造函數中聲明函數的不同方法感到困惑。Javascript構造函數中的函數聲明的差異
function ClassName() {
this.one = function() {};
var two = function() {};
three = function() {};
}
我知道一個是公開的,可以由外部調用和是私人的。什麼是三個的語義?
我對在構造函數中聲明函數的不同方法感到困惑。Javascript構造函數中的函數聲明的差異
function ClassName() {
this.one = function() {};
var two = function() {};
three = function() {};
}
我知道一個是公開的,可以由外部調用和是私人的。什麼是三個的語義?
您提供的示例將是一個語法錯誤,因爲您需要在該上下文中使用=
進行分配。
three
如果與正確的賦值運算符一起使用,將是一個全局函數,該函數將存在於該範圍之外。當您省略關鍵字var
時,該變量將被分配全局對象的屬性,該屬性在瀏覽器中爲window
。
使用var
時,它們成爲執行上下文中的VariableObject的屬性。你用它們作爲正常變量。
謝謝!這清除了它。我認爲它仍然是外部功能的一部分。 jsFiddle非常整潔。 – 2011-05-11 05:53:18
這是第一種格式
這與其他編程語言中的靜態方法相近。
var ClassName = {
one: function() {},
two: function() {},
three: function() {}
}
例如:
ClassName.one();
,另一個是:
function ClassName(){
this.one = function() {};
this.two = function() {};
this.three = function() {};
}
在這裏你可以這樣做:
var obj = new ClassName();
obj.one();
在這種情況下,你需要之前實例化對象使用這些方法。
這些是JavaScript中的兩種方法...我知道的。
這些都是你可以在構造函數中使用的:
function ClassName() {
// A function assigned to a property
this.one = function() {};
// A function assigned to a local variable
var two = function() {};
// A function declared locally
function three() {}
}
只有第一個爲對象的成員結束。
這些都是你可以在對象文本使用的:
var objectName = {
// A function assigned to a property
one: function() {}
};
不錯的點是666 ... ...有趣 – Ibu 2011-05-11 05:55:39