Javascript函数中var和this之间的区别?
Javascript函数中var和this之间的区别?,javascript,syntax,Javascript,Syntax,这两个代码块之间有什么区别吗?抱歉,如果以前有人问过这个问题。var在tools.triangle中创建一个局部变量。变量originX和originY不能与工具外部进行交互。三角形此是指向当前正在处理的对象的指针。第二个示例可以通过执行newtools.triangle()为对象赋予属性。如果不使用new而只使用tools.triangle(),此将指向全局对象,即窗口对象。您可以使用函数方法更改此指向的对象,如下所示: var tools = {}; tools.triangle = fu
这两个代码块之间有什么区别吗?抱歉,如果以前有人问过这个问题。
var
在tools.triangle
中创建一个局部变量。变量originX
和originY
不能与工具外部进行交互。三角形
<代码>此是指向当前正在处理的对象的指针。第二个示例可以通过执行newtools.triangle()为对象赋予属性代码>。如果不使用new
而只使用tools.triangle()代码>,此
将指向全局对象,即窗口
对象。您可以使用函数方法更改此
指向的对象,如下所示:
var tools = {};
tools.triangle = function() {
this.originX = 0;
this.originY = 0;
}
重要的是要知道,此
可以引用任何对象,也可以在ES5严格模式下未定义或null
您可以找到更多信息。在第一个示例中,X和Y都作为局部变量存在于变量三角形中保存的闭包中
在第二个示例中,X和Y作为对象工具的变量存在。三角形,因为使用这个变量是私有的这个
变量是公共的。@elclars该注释没有帮助,因为它具有误导性。变量可以声明为全局变量,此
与执行上下文相关,它不是通常意义上的变量,尽管它可以被视为局部变量。此
需要更多的解释,它由调用设置,可以引用任何对象,以及在ES5严格模式下未定义或null
。@0x499602D2感谢您的回答。我真的在找这个。我也不知道call
(和apply
)方法可能会改变范围。当不使用new
时,答案需要围绕场景进行更正。由于triangle
是tools
对象的一个实例函数,此指向tools
对象并调用tools.triangle()
将实际在tools对象上创建属性originX
和originY
。
var tools = {};
tools.triangle = function() {
this.originX = 0;
this.originY = 0;
}
var myObj = {};
tools.triangle.call( myObj );
// "this" in tools.triangle now points to myObj
// myObj now has the properties originX and originY