我遇到了Javascript对象文字的问题.
我想在其中一个函数中引用该对象:
var Obj = {
name : "Johnny",
dumb : function() {
alert(this.name);
}
}
Run Code Online (Sandbox Code Playgroud)
可悲的是,"哑"功能也是一个对象.因此,由于dumb()没有'name'属性,因此它将返回undefined.
我该如何解决这个问题?
dumb是你的Obj对象的一个方法.被叫时,this将被设置为Obj,并将警告"约翰尼"
var Obj = {
name : "Johnny",
dumb : function() {
alert(this.name);
}
}
Obj.dumb();
Run Code Online (Sandbox Code Playgroud)
你的代码很好.致电dumb应该是:
Obj.dumb(); // "Johnny"
Run Code Online (Sandbox Code Playgroud)
this在JavaScript中完全由函数的调用方式定义,而不是定义函数的位置.如果通过对象属性调用函数,则在调用内this将引用该对象.例如,如果你这样做:
var f = Obj.dumb;
f(); // "undefined"
Run Code Online (Sandbox Code Playgroud)
...然后你得到undefined(好吧,可能),因为你还没有设置任何特定值this.在没有特定值的情况下,使用全局对象.(window,在浏览器上.)
您还可以设置this使用call或apply的JavaScript函数功能:
var f = Obj.dumb;
f.call(Obj); // "Johnny"
Run Code Online (Sandbox Code Playgroud)
call(和apply)的第一个参数是要用作的对象this.(有了call,任何后续的参数都会传递给函数,所以f.call(Obj, 1);实际上也是如此Obj.dumb(1);.有了apply,第二个参数是一个用作函数参数的数组,所以f.apply(Obj, [1]);实际上也是如此Obj.dumb(1);.)
更多阅读:
| 归档时间: |
|
| 查看次数: |
5732 次 |
| 最近记录: |