什么's;var'声明的变量和'这'在Javascript中创建了属性

What's the difference between a 'var' declared variable and 'this' created property in Javascript?

本文关键字:Javascript 属性 创建 变量 var 声明 什么      更新时间:2023-09-26

首先使用var

 function testCode(some) 
    {
         var something = some;
    }

第二个使用这个

function testCode2(some) 
{
     this.something = some ;
}

在第一个函数中,something是一个私有(局部)变量,这意味着它在函数之外将完全不可访问;而在第二个实例中,它是一个公共实例变量。设置变量的上下文将取决于您如何调用函数:

> testCode2("foo"); // this will refer to document.window
> something
"foo"
>> var obj = new testCode2("foo"); // this will refer to the new object
>> something
ReferenceError: something is not defined
>> obj.something
"foo"

参考:

  • JavaScript中的私人会员,Douglas Crockford著

如果将这些函数用作函数,则this关键字将使变量变为静态。如果函数被调用两次,this.something仍将有其值,而一旦函数执行完毕,第一个主题将擦除变量数据。

如果您将它们用作类构造函数,var将定义一个私有变量,并声明一个公共变量。

看看这把小提琴:http://jsfiddle.net/UUFuX/1/