javascript - 'var' vs 'this' vs 构造函数参数变量

标签 javascript oop

<分区>

在 javascript 中给出了这三个构造函数:

function Foo(data) {

  var _data = data;

}

function Bar(data) {

  this.data = data;

}

function Baz(data) {

   //just use data freely.

}

除了 data 成员在构造后的可见性之外,还有什么区别吗? (例如,您可以执行 new Bar().data 但不能执行 new Foo().data)

最佳答案

是的,区别在于变量的存储方式。

var声明的变量局部于构造函数。如果范围内声明了任何函数,它只会在构造函数调用之后继续存在,因为它随后会在函数闭包中被捕获。

this.声明的变量其实不是一个变量,而是对象的一个​​属性,只要对象存在,它就会存在,不管它是否被使用。

编辑:
如果您在不声明变量的情况下使用变量,它们将在全局范围内隐式声明,而不是对象的一部分。通常,您应该尝试限制您声明的范围,这样并不是所有内容都在全局范围内结束。

关于javascript - 'var' vs 'this' vs 构造函数参数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4354418/

相关文章:

javascript - AngularJS 在对象初始化时观察是否触发

javascript - 带有桌面 js map 侧边栏菜单的 Leaflet js

javascript - 隐藏/显示点击另一个 div

python - 我对 OOP 中对象的行为有点困惑

oop - 接口(interface)继承自golang中的其他接口(interface)

javascript - 对象属性插入表 jQuery

Java继承;从可变类型扩展

javascript - HTML 下拉功能

java - 在java中为两个不同的对象创建一个封闭类

javascript - graphql 突变中无法识别的参数