JavaScript';这';混乱
这可能很容易,但我很困惑,所以也许今天我还能学到更多。我正在努力做到以下几点:JavaScript';这';混乱,javascript,object,this,Javascript,Object,This,这可能很容易,但我很困惑,所以也许今天我还能学到更多。我正在努力做到以下几点: var myObj = {}; myObj.src = {} myObj.src.A = ['1.png','2.png','3.png']; myObj.A = new Image(); myObj.A.src = this.src.A[0]; 这将导致未捕获类型错误:无法读取未定义的属性“A”错误。 当我使用myObj.src.A[0]而不是this时,它工作正常 在此上下文中使用此选项的正确方法是什么?此指代
var myObj = {};
myObj.src = {}
myObj.src.A = ['1.png','2.png','3.png'];
myObj.A = new Image();
myObj.A.src = this.src.A[0];
这将导致未捕获类型错误:无法读取未定义的属性“A”错误。
当我使用myObj.src.A[0]
而不是this
时,它工作正常
在此上下文中使用此选项的正确方法是什么?此
指代码正在其中执行的对象上下文。因此,如果一个对象有一个方法aMethod
,那么在aMethod
中,这个引用拥有它的对象
我假设您的代码在全局名称空间中运行,因此这个
是未定义的。实际上,您只需要myObj.A.src=myObj.src.A[0]代码>
此
指执行代码的对象上下文。因此,如果一个对象有一个方法aMethod
,那么在aMethod
中,这个引用拥有它的对象
我假设您的代码在全局名称空间中运行,因此这个
是未定义的。实际上,您只需要myObj.A.src=myObj.src.A[0]代码>
myObj.src.A[0]
在这种情况下是正确的,因为这个引用了它的直接父对象。myObj.src.A[0]
在这种情况下是正确的,因为这个引用了它的直接父对象。在您的代码中,这个没有引用var myObj
。很可能,如果您不在函数或对象方法的范围内,则此
指的是没有属性src的。对于您的代码,a
此
不指的是var myObj
。很可能,如果您不在函数或对象方法的范围内,则此
指的是没有属性src的。a
此关键字总是根据涉及的范围而不同。在上面发布的代码片段中,假设您只是将其放在文档头部的某个位置,this
指的是页面本身。因此,很明显,this.src.A
将是未定义的。如果您要通过委托将事件应用到它,例如:
myObj.click = function() {
alert(this.src.A[0]);
}
this
关键字接收属于委托所有者的新范围(在本例中为myObj)<代码>此
非常容易跟踪,只要您清楚地定义了范围和范围边界。此
关键字总是根据涉及的范围而不同。在上面发布的代码片段中,假设您只是将其放在文档头部的某个位置,this
指的是页面本身。因此,很明显,this.src.A
将是未定义的。如果您要通过委托将事件应用到它,例如:
myObj.click = function() {
alert(this.src.A[0]);
}
this
关键字接收属于委托所有者的新范围(在本例中为myObj)<代码>只要您清楚地定义了范围和范围边界,这个
就很容易跟踪。在JavaScript中,这个
很大程度上取决于调用函数的上下文。如果您的代码(如上所示)只是挂在页面中的脚本标记中,那么此
将成为“全局”上下文—在浏览器中是窗口
对象
通常,此
指函数所属的对象/范围,但也有一些特殊(且有用)情况发生,因为函数是可以分配给不同对象并在不同上下文中调用的第一类值
其他人编写的一些冗长的详细说明可能会有所帮助:
这在一开始似乎有点棘手,特别是如果你习惯了这个
始终是一回事的语言,但是在你学习了一些规则之后,它变得相当简单,实际上非常有用 这在JavaScript中很大程度上取决于调用函数的上下文。如果您的代码(如上所示)只是挂在页面中的脚本标记中,那么此
将成为“全局”上下文—在浏览器中是窗口
对象
通常,此
指函数所属的对象/范围,但也有一些特殊(且有用)情况发生,因为函数是可以分配给不同对象并在不同上下文中调用的第一类值
其他人编写的一些冗长的详细说明可能会有所帮助:
这在一开始似乎有点棘手,特别是如果你习惯了这个
始终是一回事的语言,但是在你学习了一些规则之后,它变得相当简单,实际上非常有用 “在此上下文中使用此项的正确方式是什么?”您应该向我们展示您的上下文……您希望此
引用什么,以及为什么?从你发布的代码中,我可以告诉你,它不会是“myObj”。你为什么认为this
应该指myObj
?你应该读书。从你发布的代码来看,你根本不需要使用这个。@FelixKling有点像真的:)现在得到了它,我不知何故认为我可以像在myObj.f=function(){this.g=55;}
“在这种情况下使用它的正确方法是什么?”您应该告诉我们您的上下文是什么……您希望此
引用什么,为什么?从你发布的代码中,我可以告诉你,它不会是“myObj”。你为什么认为this
应该指myObj
?哟