我对在构造函数中声明函数的不同方法感到困惑。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