我对在构造函数中声明函数的不同方法感到困惑。
function ClassName() {
this.one = function() {};
var two = function() {};
three = function() {};
}
我知道一个是公开的,可以由外部调用,两个是私有的。 三的语义是什么?
答案 0 :(得分:1)
您提供的示例将是语法错误,因为您需要在该上下文中使用=
进行分配。
three
如果与正确的赋值运算符一起使用,将是一个存在于该范围之外的全局函数。省略var
关键字时,会为变量分配全局对象的属性,即浏览器中的window
。
使用var
时,它们将成为执行上下文中 VariableObject 的属性。您可以将它们用作普通变量。
答案 1 :(得分:1)
这是第一种格式
这比其他编程语言中的静态方法更接近。
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中的类的两种方式......我知道。
答案 2 :(得分:1)
您可以在构造函数中使用它们:
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() {}
};