Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript—这与类对象中的变量之间的差异_Javascript - Fatal编程技术网

javascript—这与类对象中的变量之间的差异

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

想知道以下代码中变量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); //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谢谢:-)修复了它。