Javascript - 设置此值

时间:2013-02-16 19:26:47

标签: javascript

如何在Javascript中设置this的值?
例如:

var obj = {
    a: 'b',
    c: "d",
    e: function() {
        this = {
            one: 1,
            two: 2
        };
    }
};

这甚至可能吗?

4 个答案:

答案 0 :(得分:1)

您无法在javascript中明确指定this的值,就像您要求的那样。

一旦函数开始执行,该精确函数内的this值将不会改变(尽管嵌入函数可以有自己的值this)。

您可以将属性分配给this,这样也许就是您想要的:

this.one = 1;
this.two = 2;

相反,this由函数的调用者控制,函数的调用方式决定函数内部this的设置。例如:

obj.e()

会将thise()的值设为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'是一个保留关键字,无法在函数体内设置。

您可以使用函数上的applycall方法调用具有此特定值的函数。 obj.e.call({one: 1, two: 2})。在这两个Function方法上查找MDN文章。

每次调用函数时,您还可以使用ECMAScript 5的bind方法永久设置this的值。这是一个ECMAScript 5方法,因此在旧浏览器中不起作用,但是您可以使用polyfill为旧浏览器添加对它的支持。

答案 3 :(得分:0)

这个怎么样?

this.one=1;
this.two=2;