ich bekannt möchte, wenn es eine einheimische Art und Weise, dies zu tun ist:Eine native Weise benutzerdefinierte JavaScript-Funktionen in eine Methode-Anrufe Kette der Zugabe
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()
Aber ich fühle mich nicht wie der Prototyp Object
Wechsel . Gibt es eine Möglichkeit, dies zu tun, ohne den Prototyp Objects
oder die anderen Konstrukteuren zu ändern, die ich (und ist nicht der Entwickler)
Edits:
Ich fühle mich nicht sehr gut erklären, lassen‘ fügen Sie einige Details hinzu:
Was ich tun möchte, ist, einige APIs zu verwenden, die ich nicht definiere. someObject
wird wie folgt definiert, mit verkettbar Methoden:
var someObject = {
method1: function(val) {
// do something
return this
},
method2: function() {
// do something
return this
},
method3: function() {
// do something
return this
}
}
Jetzt stelle ich mir den Code nicht ändern kann, da dieses Objekt aus einer Bibliothek ist, und so will ich nicht zu. Stellen Sie sich dann vor, dass ich Methoden und einige benutzerdefinierte Funktionen (siehe mein erstes Snippet) für viele andere Objekte ketten möchte. Am einfachsten ist es, eine chain
Methode an Object.prototype
anzuhängen.
Aber ich denke, dass es zu Konflikten in der Zukunft führen könnte. Ich suche nach einer Möglichkeit, dasselbe zu tun, ohne den Prototyp zu berühren.
was meinst du für neative? –
Ich meine, den Object.prototype nicht zu berühren. Ich bin auf der Suche nach einem Javascript bereits für alle Javascript-Objekte – niahoo
Nun, solange die Funktion Teil des ursprünglichen Objekts ('myObject') ist und die Funktion' myObject' zurückgibt ('return this', in der Regel) nach seiner Fertigstellung , können Sie eine andere Funktion verketten. Ansonsten würde ich sagen - tu das nicht. Sie werden feststellen, dass es nichts Nützliches bringt. –