2016-09-13 10 views
0

function.call()という関数にインデックス変数をthisとして渡したいとします。Javascript Function.prototype.call()はプリミティブの値を渡します

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

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

だから、明らかにプリミティブ整数1は、呼び出された関数へのプリミティブとして渡されていません。
Function.prototype.call()のMDNによると "[...]プリミティブ値はオブジェクトに変換されます。"

プリミティブ整数としてfun()に渡す方法はありますか?上記の例1

+2

[XY問題](http://xyproblem.info/)のように表示されます。これを行うことで何を達成することを望みますか? – Quentin

+1

javascriptの動作がプリミティブをオブジェクトに変換するのであれば、それを避ける方法がわかりませんが、独自のJavaScriptエンジンを書くのは簡単ではありません...しかし、そのステートメントは厳密なモードであることを暗示しています –

+0

なぜ気になりますか'this'がプリミティブなのか?それがあなたが望むものなら、それをパラメータとして渡すのはなぜですか? –

答えて

1

integer PARAMとして渡されているが、内部的には、fun関数へnumber型のオブジェクトです。したがって、integerの値にはthisからアクセスしてください。 this.valueOf()を使用してください。私はこれがあなたを助けると思う!あなたが望むまあ

var x = 12; 
 

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

 
fun.call(x)

1

関数内thisの定義に従って可能になることはありません。はい、あなたの実装のための他の答えで与えられたように方法があります。

関連する問題