2016-09-13 4 views
0

Ich möchte eine Indexvariable als this an eine Funktion übergeben, die ich mit function.call() aufrufen.Javascript Function.prototype.call() übergeben primitiven Wert

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

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

So offensichtlich die primitive integer 1 nicht als primitiv an die aufgerufene Funktion übergeben.
Nach MDN für Function.prototype.call() "[...] primitive Werte werden in Objekte konvertiert."

Gibt es eine Möglichkeit, sie als primitive Ganzzahl an fun() zu übergeben?

+2

Das liest sich wie ein [XY-Problem] (http://xyproblem.info/). Was erhoffst du dir damit? – Quentin

+1

Wenn JavaScript-Verhalten Primitiven in Objekte konvertieren, dann kann ich nicht sehen, wie Sie es vermeiden können, kurz vor dem Schreiben Ihrer eigenen Javascript-Engine ... aber diese Aussage impliziert dieses Verhalten ist im strikten Modus nur –

+0

Warum kümmert es dich wenn 'das' ein Primitiv ist? Wenn Sie das wollen, warum nicht als Parameter übergeben? –

Antwort

1

In dem obigen Beispiel wird als 1integer param vergangen, aber intern ist es eine Aufgabe der number Typ der fun Funktion. Also um auf den Wert integer von this zuzugreifen. Verwenden Sie this.valueOf(). Ich denke, das hilft dir!

var x = 12; 
 

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

 
fun.call(x)

1

Nun, was Sie wollen, ist nie möglich, gemäß der Definition von this innerhalb einer Funktion. Ja, es kann einen Weg geben, der in den anderen Antworten für Ihre Implementierung angegeben ist.

Verwandte Themen