javascript—这与类对象中的变量之间的差异
想知道以下代码中变量test1和test2之间的区别javascript—这与类对象中的变量之间的差异,javascript,Javascript,想知道以下代码中变量test1和test2之间的区别 function myClass(){ var test1 = 'abc'; this.test2 = 'def'; this.Method1 = function(){ someObj(this.success); } this.success = function(){ console.log(test1); //able to output value console.log(this.test2); //u
function myClass(){
var test1 = 'abc';
this.test2 = 'def';
this.Method1 = function(){
someObj(this.success);
}
this.success = function(){
console.log(test1); //able to output value
console.log(this.test2); //unable to get the output
console.log(test2); //unable to get the output
}
}
编辑:为了更精确,我试图从内部函数访问变量。我无法访问test2变量,但能够从test1中提取值。
这一切都是关于范围的。这里有一个很好的例子和解释:
JavaScript实际上只有两种类型,功能性和全局性
this.test2
在本例中与window.test2
相同
this关键字不引用当前正在执行的函数,因此必须按名称引用函数对象,即使在函数体中也是如此
var test1
将仅在您的函数中定义myClass
无论变量声明出现在何处,都会在执行任何代码之前进行处理。使用var声明的变量的作用域是其当前执行上下文,它可以是封闭函数,也可以是在任何函数之外声明的全局变量
test1
是myClass
函数的局部变量。无法在外部访问它test2
是调用myClass
的当前对象的属性基于函数名中包含
类
,我假设它是一个构造函数。因此,test2
将在新构造的对象上设置。“…变量test1和test2之间的区别是什么…”首先,test2
不是一个变量。:-)(详情请参见Fourtheye的答案…)有关变量和属性之间的差异,请查看@T.J.Crowder谢谢:-)修复了它。