有什么区别
function Set(){
this.a =1;
this._v2s=function(){};
this._v2s.next = 1000;
}
和
function Set(){
this.a =1;
_v2s =function(){};
_v2s.next = 1000;
}
和
function Set(){
this.a =1;
}
Set._v2s = function(){};
Set._v2s.next =1000;
有点困惑,因为他们彼此之间的行为并不相同
在第一个示例中,您实际上是使用函数构造一个类,其中值this.a
和this.v2
将应用于您的新对象。
在第二个例子中
_v2s =function(){};
_v2s.next = 1000;
是一个全局变量。一个new Set
将设置一个全局变量_v2s
与属性next
在第三个中,您将_v2
属性设置为类本身。这意味着当你构建你的Set
时,_v2
不会用你的套装创建。它只能通过调用Set._v2
来访问
希望不要混淆。
为了解释你的三个例子之间的差异,让我们假设你使用new关键字调用你的Set函数,使它像一个构造函数:
var mySet = new Set();
1.第一个例子:
function Set(){
this.a =1;
this._v2s=function(){};
this._v2s.next = 1000;
}
var mySet = new Set();
这段代码定义了什么:
Set
:对象(原型Function.prototype
)mySet
:具有2个自有属性的对象(原型Set.prototype
):
a
:数字(值= 1)
_v2s
:一个对象(原型函数),有一个名为next的自有属性,它是一个数字(值= 1000)2.第二个例子:
function Set(){
this.a =1;
_v2s =function(){};
_v2s.next = 1000;
}
var mySet = new Set();
这段代码定义了什么:
Set
:对象(原型Function.prototype
)mySet
:具有1个属性的对象(原型Set.prototype
):
a
:数字(值= 1)mySet
的自有属性3.第三个例子:
function Set(){
this.a =1;
}
Set._v2s = function(){};
Set._v2s.next =1000;
var mySet = new Set();
这段代码定义了什么:
Set
:对象(原型Function.prototype
),拥有1个属性:
_v2s
:和以前一样,除了它现在是Set
对象的自有属性。mySet
:具有1个属性的对象(原型Set.prototype
):
a
:数字(值= 1)