var tools = {};
tools.triangle = function() {
var originX = 0;
var originY = 0;
}
var tools = {};
tools.triangle = function() {
this.originX = 0;
this.originY = 0;
}
这两个代码块之间有什么区别吗?对不起,如果之前有人询问过。
答案 0 :(得分:11)
var
在tools.triangle
内创建一个局部变量。变量originX
和originY
无法与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
中。