var tools = {};
tools.triangle = function() {
var originX = 0;
var originY = 0;
}
var tools = {};
tools.triangle = function() {
this.originX = 0;
this.originY = 0;
}
这两个代码块之间有什么区别吗?抱歉,如果之前有人问过这个问题。
var tools = {};
tools.triangle = function() {
var originX = 0;
var originY = 0;
}
var tools = {};
tools.triangle = function() {
this.originX = 0;
this.originY = 0;
}
这两个代码块之间有什么区别吗?抱歉,如果之前有人问过这个问题。
var
在tools.triangle
. 变量originX
和originY
不能与外部交互tools.triangle
。this
是指向您正在处理的当前对象的指针。第二个示例可用于通过执行为对象赋予属性new tools.triangle();
。如果您不使用new
而只使用tools.triangle();
,this
将指向作为对象的全局window
对象。this
您可以使用函数方法将对象更改为指向的对象call();
,apply();
如下所示:
var myObj = {};
tools.triangle.call( myObj );
// "this" in tools.triangle now points to myObj
// myObj now has the properties originX and originY
重要的是要知道它this
可以引用任何对象,也可以是未定义的或null
在 ES5 严格模式下。
您可以在此处找到更多信息。
在第一个示例中,X 和 Y 都作为保存在变量中的闭包的局部变量存在triangle
。
在第二个示例中,X 和 Y 作为对象的变量存在,tools.triangle
因为使用this
.