构造函数中的JAVASCRIPT函数

构造函数中的JAVASCRIPT函数,javascript,function,methods,constructor,Javascript,Function,Methods,Constructor,这两者有什么区别 function Set(){ this.a =1; this._v2s=function(){}; this._v2s.next = 1000; } 及 及 有点困惑,因为它们彼此的行为不同在第一个示例中,您基本上是在用函数构造一个类,其中值this.A和this.v2将应用于新对象 在第二个例子中 _v2s =function(){}; _v2s.next = 1000; 是一个全局变量。新集合将使用属性next设置全局变量\u v2s 在第三个

这两者有什么区别

function Set(){
    this.a =1;
    this._v2s=function(){};
    this._v2s.next = 1000;
}


有点困惑,因为它们彼此的行为不同在第一个示例中,您基本上是在用函数构造一个类,其中值this.A和this.v2将应用于新对象

在第二个例子中

_v2s =function(){};
_v2s.next = 1000;
是一个全局变量。
新集合
将使用属性
next
设置全局变量
\u v2s

在第三个示例中,您将
\u v2
属性设置到类本身上。这意味着当您构建
集合时,
\u v2
将不会与集合一起创建。它只能通过调用
Set来访问。\u v2


希望这不会让人困惑

为了解释这三个示例之间的差异,假设您使用new关键字调用Set函数,使其像构造函数一样工作:

var mySet = new Set(); 
1。第一个示例:

function Set(){
    this.a =1;
    this._v2s=function(){};
    this._v2s.next = 1000;
}

var mySet = new Set(); 
function Set(){
    this.a =1;
    _v2s =function(){};
    _v2s.next = 1000;
}

var mySet = new Set();
function Set(){
    this.a =1;
}

Set._v2s = function(){};
Set._v2s.next =1000;

var mySet = new Set();
此代码定义的内容:

  • Set
    :对象(原型
    函数的对象。原型
  • mySet
    :对象(属于prototype
    Set.prototype
    ),具有两个自己的属性:
    • a
      :数字(值=1)
    • \u v2s
      :一个对象(原型函数的),它拥有一个名为next的属性,该属性是一个数字(值=1000)
2。第二个示例:

function Set(){
    this.a =1;
    this._v2s=function(){};
    this._v2s.next = 1000;
}

var mySet = new Set(); 
function Set(){
    this.a =1;
    _v2s =function(){};
    _v2s.next = 1000;
}

var mySet = new Set();
function Set(){
    this.a =1;
}

Set._v2s = function(){};
Set._v2s.next =1000;

var mySet = new Set();
此代码定义的内容:

  • Set
    :对象(原型
    函数的对象。原型
  • mySet
    :对象(原型
    Set.prototype
    ),具有1个自己的属性:
    • a
      :数字(值=1)
  • _v2s:与以前相同,只是它现在是一个全局变量,不再是
    mySet
3。第三个示例:

function Set(){
    this.a =1;
    this._v2s=function(){};
    this._v2s.next = 1000;
}

var mySet = new Set(); 
function Set(){
    this.a =1;
    _v2s =function(){};
    _v2s.next = 1000;
}

var mySet = new Set();
function Set(){
    this.a =1;
}

Set._v2s = function(){};
Set._v2s.next =1000;

var mySet = new Set();
此代码定义的内容:

  • Set
    :对象(prototype
    函数的prototype
    ),具有1个自己的属性:
    • \u v2s
      :与以前相同,只是现在它是
      集合
      对象的自有属性
  • mySet
    :对象(原型
    Set.prototype
    ),具有1个自己的属性:
    • a
      :数字(值=1)

对于每一个问题,您的期望是什么,结果是什么?如果您通读了基础知识,您可能会回答自己的问题。首先,
\u v2s
是类实例对象,其次是最后一种情况下的全局变量和属性函数。它不会引发错误:如果没有
var
,它是一个全局变量。确实如此。我必须修改我的回答。