在下面你的函数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