什么's;var'声明的变量和'这'在Javascript中创建了属性
What's the difference between a 'var' declared variable and 'this' created property in Javascript?
首先使用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/
相关文章:
- offsetLeft Javascript属性需要更多时间
- JavaScript 属性继承
- Javascript 属性名称上的正则表达式
- 如何更改对 javascript 属性的调用的范围/上下文
- 使用相同的名称访问Javascript属性
- 为什么某些Javascript属性没有在调试器中以交互方式显示
- 隐藏元素:Javascript属性和CSS样式之间的区别
- 用函数重写Javascript属性
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- 在读取之前设置未定义的 javascript 属性
- 使用字符串选择器设置javascript属性
- 按名称将文本替换为 JavaScript 属性的内容
- 来自变量的 Javascript 属性
- 从 javascript 属性和值中删除
- Javascript:属性描述符和内置属性属性之间的关系是什么
- JavaScript 属性重复 [点与括号]....
- Jquery 属性代码到 Javascript 属性代码
- JavaScript属性存储它
- 带有 setter 方法的 JavaScript 属性不是真正的属性
- 使用 getter/setter 覆盖 javascript 属性,同时仍访问底层属性