17
var tools = {};

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

 

var tools = {};

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

这两个代码块之间有什么区别吗?抱歉,如果之前有人问过这个问题。

4

2 回答 2

13

vartools.triangle. 变量originXoriginY不能与外部交互tools.trianglethis是指向您正在处理的当前对象的指针。第二个示例可用于通过执行为对象赋予属性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 严格模式下。

您可以在此处找到更多信息。

于 2012-07-01T22:05:00.170 回答
1

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

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

于 2012-07-01T22:13:30.380 回答