在下面你的函數cat
可以調用eat
和play
功能的情況下直接實例化一個新的cat
對象,這是由值傳遞從功能cat.eat
到cat.play
函數來獲取狀況證明。複製下劃線的鏈方法風格
var cat = function(obj){
// if (obj instanceof cat) return obj;
// if (!(this instanceof cat)) return new cat(obj);
// this.catwrapped = obj;
}
cat.eat = function(food){
if(food == "tuna") return 95
if(food == "milk") return 35
return 0
}
cat.play = function(energy){
if(energy < 50) return 0
return 100
}
var energy = cat.eat("tuna")
var status = cat.play(energy)
console.log(status) // 100
我試圖保持此功能並添加下劃線樣式鏈接。所以你可以做到以下幾點。這是如何實現的?
cat.day = function(obj){
var instance = cat(obj);
// instance._chain = true;
return instance;
}
var status = cat.day()
.eat("tuna")
.play()
.status()
console.log(status) // should log 100
那是我必須cat
和cat.day
,使這項工作最少的代碼?
哇,剛剛發現[強調遍歷自身](https://github.com/jashkenas/underscore/blob/master/underscore.js#L1550)創建所有的'原型'。 – ThomasReggi
我想我錯了,它只是將數組操作添加到下劃線庫。 – ThomasReggi
你的功能*做任何事情嗎?如果他們沒有副作用,可以完全忽略對他們的呼叫。他們不應該至少改變貓實例嗎?目前,你的功能只返回一些數字。下一個函數返回一個不同的數字,沒有任何關聯它們的東西。 Chaining在這裏似乎毫無用處。 – Bergi