之间的区别是什么
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;
有点困惑,因为他们彼此之间的行为并不相同
答案 0 :(得分:1)
在您的第一个示例中,您实际上是在使用您的函数构建一个类,其中值this.a
和this.v2
将应用于您的新对象。
在第二个例子中
_v2s =function(){};
_v2s.next = 1000;
是一个全局变量。 new Set
会使用属性_v2s
next
在第三个中,您将_v2
属性设置为类本身。这意味着,当您构建Set
时,将不会使用您的集创建_v2
。只能通过致电Set._v2
希望这不会令人困惑。
答案 1 :(得分:0)
为了解释你的三个例子之间的区别,让我们假设你使用new关键字调用你的Set函数,使它像一个构造函数:
var mySet = new Set();
<强> 1。第一个例子:
function Set(){
this.a =1;
this._v2s=function(){};
this._v2s.next = 1000;
}
var mySet = new Set();
此代码定义的内容:
Set
:object(原型Function.prototype
)mySet
:具有2个自有属性的对象(原型Set.prototype
):
a
:number(value = 1)_v2s
:一个对象(原型Function),有一个名为next的自有属性,是一个数字(值= 1000)<强> 2。第二个例子:
function Set(){
this.a =1;
_v2s =function(){};
_v2s.next = 1000;
}
var mySet = new Set();
此代码定义的内容:
Set
:object(原型Function.prototype
)mySet
:具有1个自有属性的对象(原型Set.prototype
):
a
:number(value = 1)mySet
第3。第三个例子:
function Set(){
this.a =1;
}
Set._v2s = function(){};
Set._v2s.next =1000;
var mySet = new Set();
此代码定义的内容:
Set
:object(原型Function.prototype
),拥有1个自己的属性:
_v2s
:与之前相同,但它现在是Set
对象的自有属性。mySet
:具有1个自有属性的对象(原型Set.prototype
):
a
:number(value = 1)