Tôi muốn biết nếu có một cách tự nhiên để làm điều này:Một cách tự nhiên của việc thêm chức năng JavaScript tùy chỉnh vào chuỗi phương pháp-cuộc gọi
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()
Nhưng tôi không cảm thấy như thay đổi nguyên mẫu của Object
. Có cách nào để làm điều này mà không sửa đổi các nguyên mẫu của Objects
hoặc các nhà thầu khác mà tôi sử dụng (và đang không phải là nhà phát triển của)
Chỉnh sửa:
tôi cảm thấy tôi không giải thích rất tốt, vì vậy hãy' thêm một số chi tiết:
Điều tôi muốn làm là sử dụng một số API mà tôi không xác định. someObject
được định nghĩa như sau, với các phương pháp thể kết nối:
var someObject = {
method1: function(val) {
// do something
return this
},
method2: function() {
// do something
return this
},
method3: function() {
// do something
return this
}
}
Bây giờ tưởng tượng tôi không thể thay đổi mã này, bởi vì đối tượng này là từ một thư viện, và vì vậy tôi không muốn. Sau đó, hãy tưởng tượng rằng tôi muốn các phương thức chuỗi và một số hàm tùy chỉnh (xem đoạn mã đầu tiên của tôi) cho nhiều đối tượng khác nhau. Điều đơn giản nhất cần làm là đính kèm phương thức chain
vào Object.prototype
.
Nhưng tôi nghĩ rằng điều đó có thể dẫn đến xung đột trong tương lai. Tôi đang tìm một cách để làm điều tương tự mà không cần chạm vào nguyên mẫu.
ý của bạn là gì cho gọn gàng? –
Tôi có nghĩa là không chạm vào Object.prototype. Tôi đang tìm kiếm một javascript đã có sẵn trên tất cả các đối tượng javascript – niahoo
Vâng, miễn là hàm là một phần của đối tượng gốc ('myObject') và hàm trả về' myObject' ('trả về this', thường) khi hoàn thành nó , bạn có thể gọi một chuỗi chức năng khác. Nếu không tôi sẽ nói - đừng làm thế. Bạn sẽ thấy rằng nó không mang lại bất cứ điều gì hữu ích. –