Я немного потерял это. Я знаю, что мне нужно назначить это другой переменной (ex: var), чтобы методы могли быть целыми. Без модификации modifyFunction, с кем я смогу сделать эту цепочку? Если кто-нибудь из вас может это понять, тогда вы можете мне это объяснить?Цепные методы объекта
function modifyFunction(f) {
console.log(f);
return function() {
var returnValue = f.apply(this, arguments);
if (returnValue == undefined) {
return this;
} else {
return returnValue;
}
};
}
function modifyMethod(o, m) {
if (o.hasOwnProperty(m)) {
console.log(o[m] instanceof Function);
if (o[m] instanceof Function) {
if (m == "add") {
modifyFunction(this.o[m]);
}
console.log(this.o[m]);
modifyFunction(o[m]);
return this;
}
} else {
return this
}
}
var o = {
num: 0,
add: function(x) {
return this.num += x;
},
sub: function(x) {
return this.num -= x;
}
};
// We can't chain object o's method because they don't return "this"
//o.add(4).sub(2); // fail - the methods aren't chainable yet!
// Make the add method chainable.
modifyMethod(o, "add");
// Now we can chain the add methods
o.add(2).add(4);
console.log(o.num); // o.num = 6
// Now make the sub method chainable
modifyMethod(o, "sub");
// Now we can chain both the sub and add methods
o.sub(1).add(3).sub(5);
console.log(o.num); // o.num = 3
ТОЛЬКО модификация функции modifyMethod :) – DevBear15