2016-09-22 1 views
0

die removeProperty Funktion implementieren nimmt, die ein Objekt und einen Eigenschaftsnamen nimmt und führt Folgendes aus:Implementieren Sie die removeProperty Funktion, die ein Objekt und einen Eigenschaftsnamen in Javascript

Wenn Objekt obj Eigenschaft prop hat es die Eigenschaft entfernt von das Objekt. Wenn die Eigenschaft entfernt wurde, wird true zurückgegeben. Andernfalls wird false zurückgegeben.

Was ist falsch mit diesem Code?

function removeProperty(obj,prop) { 
if(obj.hasOwnProperty('prop')) 
    { 
    console.log(obj); 
    delete obj.prop; 
    return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

var obj= { 
    name:"John" 
}; 

removeProperty({obj,'name'}); 

Antwort

1

Hier ist der vollständige Code, der hilfreich sein könnte. Es gibt viele Möglichkeiten, dies zu tun.

<!DOCTYPE html> 
<html> 
<body> 
<h1>JavaScript Functions</h1> 

<p onclick="removeProperty(obj,'name')">This example calls :</p> 
<script> 
function removeProperty(obj,prop){ 

if(obj.hasOwnProperty(prop)) { 
    console.log(obj); 
    var b = delete obj.prop; 
    console.log(b); 
    return true; 
    } 
    else { 
     return false; 
    } 
} 

var obj= { 
    name:"John" 
}; 

// removeProperty(obj,'name'); 

</script> 
</body> 
</html> 
+1

dies gearbeitet wird, weil testdome nur ECMAScript 5.1 unterstützen, dank – yussan

0

Der Fehler im Code ist auf das Argument, dass Sie die removeProperty Funktion übergeben habe. Es erwartet zwei Argumente und Sie haben es 1 übergeben, was falsch geschrieben ist.

Sie versuchen {obj, 'name'} als zwei Argumente zu übergeben, wenn in der Tat ist es ein einziges Argument, das ein Objekt ist.

Stattdessen sollten Sie removeProperty(obj, 'name'); schreiben und if(obj.hasOwnProperty('prop')) zu if(obj.hasOwnProperty(prop)) ändern, da das Argument eine Variable mit einer Zeichenfolge ist.

Hier ist eine funktionierende Version des Codes:

function removeProperty(obj,prop) { 

if(obj.hasOwnProperty(prop)) { 
    console.log(obj); 
    delete obj.prop; 
    return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

var obj= { 
    name:"John" 
}; 

removeProperty(obj,'name'); 

und hier ist eine optimierte Version:

function removeProperty(obj, prop) { 
    if (obj[prop] !== undefined) { 
    console.log(obj); 
    delete obj[prop]; 
    return true; 
    } 
    return false; 
}; 

var obj= { 
    name:'John' 
}; 

removeProperty(obj,'name'); 
3

Der erwartete Code wäre:

function removeProperty(obj, prop) { 
if(prop in obj){ 
    delete obj[prop]; 
    return true; 
}else{ 
    return false; 
} 
} 

Erläuterung:

Die Methode hasOwnProperty() gibt einen booleschen Wert zurück, der angibt, ob das Objekt die angegebene Eigenschaft als eigene (nicht geerbte) Eigenschaft hat. So können Sie eigene und geerbte Eigenschaften überprüfen und in verwenden.

Bracket Notation wird die bessere Option als obj.prop sein. Da die Square-Klammer-Notation die Verwendung von Zeichen ermöglicht, die nicht mit der Punktnotation verwendet werden können (wie Zahlen), können auch Eigenschaften mithilfe von Variablen ausgewählt werden. Im aktuellen Szenario sollte Bracket-Notation verwendet werden.

Verwandte Themen