Javascript:this.varName="&引用;vs var varName="&引用;

Javascript:this.varName="&引用;vs var varName="&引用;,javascript,variables,Javascript,Variables,我不熟悉JS,所以没有问题: 我看到了定义变量的函数: function functionName(){ this.something = ""; }; 如果我理解正确,某物是局部变量?为什么它被定义为this.something='而不是var something=''? 有什么区别吗?如果有,那是什么?它设置了这个的属性something。此所指的内容取决于调用functionName的方式,但通常它是使用new创建的对象: var foo = new functionNam

我不熟悉JS,所以没有问题:

我看到了定义变量的函数:

 function functionName(){
     this.something = "";
 };
如果我理解正确,
某物是局部变量?为什么它被定义为
this.something='
而不是
var something=''

有什么区别吗?如果有,那是什么?

它设置了
这个
的属性
something
。此
所指的内容取决于调用
functionName
的方式,但通常它是使用
new
创建的对象:

var foo = new functionName();
console.log(foo.something);

如果在函数内部使用
var something
,则从外部无法访问该变量,因此在上述示例中无法执行
foo.something

它设置
this
的属性
something
。此
所指的内容取决于调用
functionName
的方式,但通常它是使用
new
创建的对象:

var foo = new functionName();
console.log(foo.something);
var someThing 
如果在函数内部使用
var something
,则从外部无法访问该变量,因此在上述示例中无法执行
foo.something

var someThing 
是局部变量-表示它存在于当前块的范围内

this.someThing
是一个实例变量-表示它属于该对象,并且在该对象的所有方法中都可见

是局部变量-表示它存在于当前块的范围内

this.someThing

是一个实例变量-表示它属于该对象,并且在该对象的所有方法中都可见

这与变量的范围有关,您可能希望检查这个问题及其接受的答案:tl;dr:使用
var
使某事物成为该上下文范围内的变量;省略
var
会隐式地将变量标记为全局变量;使用
this
使其成为执行上下文的属性(
this
对象)检查这是否有帮助-这与变量的范围有关,您可能希望检查此问题及其接受的答案:tl;dr:使用
var
使某事物成为该上下文范围内的变量;省略
var
会隐式地将变量标记为全局变量;使用
this
使其成为执行上下文(this
对象)的一个属性,检查这是否有帮助-