2017-01-26 1 views
0

Ich habe folgende JavaScript-CodeAufruf der Funktion mit neuem Operator, der keinen Wert zurückgibt?

var foo = function(a, b) { 
 
     var sumn; 
 
     sumn = a + b; 
 
     return sumn; 
 
    } 
 
    
 
    var k = new foo(2, 3); 
 

 
    console.log(k);

dieser Wert als Summe nicht zurückkehrt? Was ist die Lösung dafür?

+1

nicht 'new' Verwenden Sie? –

+0

'New' erstellt ein neues Objekt mit foo als Prototyp dafür. Versuchen Sie, die Funktion aufzurufen? Wenn ja, benutze keinen neuen, nur Code 'var k = foo (2,3);' –

+0

@DIEGOCARRASCAL: 'foo' ist nicht der Prototyp. Es ist der Konstruktor. Es kann einen Prototyp haben, der 'foo.prototype' zugewiesen ist, aber in diesem Fall nicht, erbt er direkt von' Objekt' – slebetman

Antwort

2

Sie benötigen einen Verweis auf das Objekt halten Sie mit this erstellt

var foo = function(a,b){ 
    this.sumn = a+b; 
} 
var k = new foo(2,3); 
console.log(k); // > foo {sumn: 5} 
console.log(k.sumn); 
1

Sie brauchen nicht neu für den Aufruf einer Funktion.

1

Das folgende Beispiel ruft die Funktion auf, führt die Addition durch und gibt den Wert zurück. Sie müssen nicht „Neu“ Stichwort

Gemäß unten Beispiel müssen die Ausgabe 7.

<!DOCTYPE html> 
<html> 
<body> 




<p id="demo"></p> 

<script> 
function foo(a,b) { 
    return a+b; 
} 
document.getElementById("demo").innerHTML = foo(4, 3); 



</script> 

</body> 
</html> 
Verwandte Themen