如何在Javascript中设置this
的值?
例如:
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
这甚至可能吗?
答案 0 :(得分:1)
您无法在javascript中明确指定this
的值,就像您要求的那样。
一旦函数开始执行,该精确函数内的this
值将不会改变(尽管嵌入函数可以有自己的值this
)。
您可以将属性分配给this
,这样也许就是您想要的:
this.one = 1;
this.two = 2;
相反,this
由函数的调用者控制,函数的调用方式决定函数内部this
的设置。例如:
obj.e()
会将this
内e()
的值设为obj
。
您还可以使用.apply()
和.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()
值设置为您请求的对象。
答案 1 :(得分:0)
var obj = { a:'b', c:"d", e:function(){
// Here, this.one === 1 and this.two === 2
}.bind({ one: 1, two : 2})};
答案 2 :(得分:0)
'this'是一个保留关键字,无法在函数体内设置。
您可以使用函数上的apply
或call
方法调用具有此特定值的函数。 obj.e.call({one: 1, two: 2})
。在这两个Function方法上查找MDN文章。
每次调用函数时,您还可以使用ECMAScript 5的bind
方法永久设置this
的值。这是一个ECMAScript 5方法,因此在旧浏览器中不起作用,但是您可以使用polyfill为旧浏览器添加对它的支持。
答案 3 :(得分:0)
这个怎么样?
this.one=1;
this.two=2;