我已經創建了自己的new
函數創建一個對象,並返回其關於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()
的問題是,當我設置這樣的回報:
return constructor.apply(obj, myArray.slice(1)) || obj
它的工作原理,但是當我設置類似如下的回報:
return obj || constructor.apply(obj, myArray.slice(1))
它說未定義
有什麼區別是這兩個?
那麼'constructor.apply(obj,myArray.slice(1))'是錯誤的? –
@AhMedRaXa調用'constructor.apply(obj,myArray.slice(1))'以Douglas和Crockford爲參數調用Person函數。由於這個,當你調用getName()時,函數有this.firstName和this.lastName。 –
我的意思是如何評估'constructor.apply(obj,myArray.slice(1))'是否爲假,以便它正在評估'||'的右側? –