ich meine eigene new
Funktion erstellt haben, die ein Objekt erstellt und gibt esIn Bezug auf das Schlüsselwort return
function Person(firstName, lastName) {
this.firstName = firstName
this.lastName = lastName
}
Person.prototype.getName = function() {
console.log(this.firstName + " " + this.lastName)
}
function spawn(constructor) {
var obj = {}
Object.setPrototypeOf(obj, constructor.prototype);
var myArray = Array.prototype.slice.apply(arguments)
return constructor.apply(obj, myArray.slice(1)) || obj
}
var crockford = spawn(Person, "Douglas", "Crockford")
crockford.getName()
Das Problem ist, dass, wenn ich die Rückkehr wie folgt festgelegt:
return constructor.apply(obj, myArray.slice(1)) || obj
es funktioniert, aber wenn ich habe die Rückkehr wie folgt aus:
return obj || constructor.apply(obj, myArray.slice(1))
es sagt undefined
was ist der Unterschied zwischen diesen beiden?
Also wie 'constructor.apply (obj, myArray.slice (1))' ist falsch? –
@AhMedRaXa Der Aufruf 'constructor.apply (obj, myArray.slice (1))' ruft die Person-Funktion mit Douglas und Crockford als Argumente auf. Wenn Sie also getName() aufrufen, hat die Funktion this.firstName und this.lastName. –
Ich meinte, wie die Auswertung von 'constructor.apply (obj, myArray.slice (1))' ist falsch, so dass es die rechte Seite der '||' evaluiert? –