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.