【问题标题】:Pros and cons of this.myVar vs. var myVar [duplicate]this.myVar 与 var myVar 的优缺点 [重复]
【发布时间】:2016-05-18 03:17:13
【问题描述】:
var MyFunction = function () {
    this.myVar = 'something';
    var myVar = 'else';
};

以上两者各有什么优缺点,我看到都在用。

【问题讨论】:

  • 它们只是不同的东西。这就像问数字与字符串的优缺点一样。
  • @ÁlvaroGonzález 如果您可以提供场景,这将有所帮助,因为两者都可以在函数内部使用。
  • 它们不是可互换的选项,它们做的事情完全不同,所以一个优缺点列表真的没有意义。
  • 这与利弊无关。它是关于设计的,即Open/Closed PrincipleEncapsulation。后一个链接描述了您可能会发现有用的第三个选项:属性。

标签: javascript


【解决方案1】:

主要区别如下:

var myFunc = function(){
this.x = 2; // You want this to be used outside of the declaration
}

var y = new MyFunc();
console.log(y.x); // 2

var myFunc2 = function(){
var x = 3; // you only want to use it inside this function
}

var z = new MyFunc2();
console.log(y.x); // undefined

所以这个。变量将是可访问的,而 var 不会。

【讨论】:

  • 那么它基本上是公共的与 Java 中的受保护/私有的?
  • 不,它更接近本地与(公共)成员
  • 就像伊利亚说的:)
  • ...但不完全是,因为 Javascript(闭包、绑定等)
  • 将阅读它@Ilya
【解决方案2】:

当您想表明它是一个充当 MyFunction 的属性的变量时,请使用 this.myVar。

考虑:

var MyFunction = function () {
this.myVar = 'something';
var myVar2 = 'else';

};

然后

myF = new MyFunction()

请注意,您现在可以访问 myF.myVar(作为属性),但不能访问 myVar2。

【讨论】:

  • "它是一个充当 MyFunction 属性的变量" - 它不是 MyFunction 的属性,它是任何对象的属性@ 987654323@ 指的是函数运行的时间 - 根据 MyFunction 的调用方式,它可以是任何对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多