Я хотел бы знать, есть ли способ для этого:
Object.prototype.chain = function(f) { return f.call(this) }
function fun1() {
doSomethingWithObject(this)
return this
}
function fun2() {
doSomethingElse(this)
return this
}
someObject
.method1('something')
.method2()
.chain(checkSomething() ? fun1 : fun2)
.method3()
Но мне не хочется менять прототип Object
. Есть ли способ сделать это без изменения прототипа Objects
или других конструкторов, которые я использую (и я не разработчик)
Редактирование:
Я чувствую, что не очень хорошо объясняю, поэтому давайте добавим некоторые детали:
Что я хотел бы сделать, так это использовать некоторые API, которые я не определяю. someObject
определяется следующим образом: с цепными методами:
var someObject = {
method1: function(val) {
// do something
return this
},
method2: function() {
// do something
return this
},
method3: function() {
// do something
return this
}
}
Теперь представьте, что я не могу изменить этот код, потому что этот объект из библиотеки, и поэтому я не хочу этого делать. Затем представьте, что я хотел бы связать методы и некоторые пользовательские функции (см. Мой первый фрагмент) для многих других объектов. Самое простое - подключить метод chain
к Object.prototype
.
Но я думаю, что это может привести к конфликтам в будущем. Я ищу способ сделать то же самое, не касаясь прототипа.