在Javascript函数中var和this之间的区别?

时间:2012-07-01 22:03:22

标签: javascript syntax

var tools = {};

tools.triangle = function() {
    var originX = 0;
    var originY = 0;
}

var tools = {};

tools.triangle = function() {
    this.originX = 0;
    this.originY = 0;
}

这两个代码块之间有什么区别吗?对不起,如果之前有人询问过。

2 个答案:

答案 0 :(得分:11)

vartools.triangle内创建一个局部变量。变量originXoriginY无法与tools.triangle之外的人进行互动。 this是指向您正在处理的当前对象的指针。第二个示例可用于通过执行new tools.triangle();为对象提供属性。如果您不使用new并仅使用tools.triangle();this将指向全局对象,即window对象。您可以使用函数方法call();apply();来更改this指向的对象:

var myObj = {};

tools.triangle.call( myObj );

// "this" in tools.triangle now points to myObj
// myObj now has the properties originX and originY

重要的是要知道this可以引用任何对象,以及在ES5严格模式下未定义或null

您可以找到更多信息here

答案 1 :(得分:0)

在第一个例子中,X和Y都作为保存在变量triangle中的闭包的局部变量存在。

在第二个示例中,由于使用tools.triangle,X和Y作为变量存在于对象this中。