如何this
在 Javascript 中设置 的值?
例如:
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
这甚至可能吗?
如何this
在 Javascript 中设置 的值?
例如:
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
这甚至可能吗?
您不能this
像您要求的那样在 javascript 中显式分配值。
一旦函数开始执行,该函数this
内部的值就不会改变(尽管嵌入式函数可以有自己的值this
)。
您可以将属性分配给this
这样的,所以也许这就是您想要的:
this.one = 1;
this.two = 2;
相反,this
它由函数的调用者控制,函数的调用方式决定了this
函数内部的设置。例如:
obj.e()
将this
inside of的值设置e()
为obj
。
您还可以使用.apply()
and.call()
将值this
设置为包含对象以外的其他值。
例如,按照您的要求执行此代码:
var test = {one:1, two:2};
var obj = { a:'b', c:"d", e:function(){
// this will be set to the test object in here when called as below
}};
obj.e.call(test);
将导致this
此特定调用内部的值e()
设置为您请求的对象。
var obj = { a:'b', c:"d", e:function(){
// Here, this.one === 1 and this.two === 2
}.bind({ one: 1, two : 2})};
'this' 是一个保留关键字,不能在函数体内设置。
您可以调用具有特定值的函数 this usingapply
或call
函数上的方法。obj.e.call({one: 1, two: 2})
. 查找有关这两个 Function 方法的 MDN 文章。
您还可以使用 ECMAScript 5 的bind
方法来永久设置this
每次调用函数时的值。这是一种 ECMAScript 5 方法,因此在旧浏览器中不起作用,但是您可以使用一些 polyfill 来为旧浏览器添加对它的支持。
这个怎么样?
this.one=1;
this.two=2;