Javascript Function.prototype.call()传递原始值

时间:2016-09-13 10:26:36

标签: javascript this call primitive

我想将索引变量this传递给我用function.call()调用的函数。

var fun = function() {
    console.log( this );
}

fun.call( 1 );
// -> Number {[[PrimitiveValue]]: 1}

很明显,原始整数1不会作为原语传递给被调用的函数 根据{{​​3}}对于Function.prototype.call()" [...]原始值将转换为对象。"

有没有办法将它作为原始整数传递给fun()

2 个答案:

答案 0 :(得分:1)

在上面的示例中,1作为integer参数传递,但在内部它是number函数的fun类型的对象。因此,为了从integer访问this的值。使用this.valueOf()。我认为这有助于你!

var x = 12;

function fun() {
  console.log(this.valueOf());
}

fun.call(x)

答案 1 :(得分:1)

根据函数内this的定义,你想要的东西是不可能的。是的,你可以在实施的其他答案中给出解决方法。