2012-06-27 25 views
7

Tôi hiện đang sử dụng JavaScript (CommonJS) trong Titanium Studio và có câu hỏi về tạo mẫu. Giả sử rằng tôi muốn thêm một hàm mới vào một lớp hiện có. Ví dụ:Nơi để thêm nguyên mẫu Chuỗi

String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,""); 
} 

Nơi thích hợp nhất nơi tôi nên thêm mã này để nó có sẵn cho tất cả các lớp ngay lập tức?

Xin cảm ơn trước.

Trả lời

8

Ok, tôi tìm thấy câu trả lời tốt nhất (bởi Ivan Škugor) và tôi muốn đặt nó ở đây để chia sẻ với những người có cùng một câu hỏi. Cảm ơn bạn đã giúp đỡ.

"Mở rộng nguyên mẫu gốc nói chung không phải là ý tưởng hay. Trong trường hợp cụ thể này, điều đó không có vấn đề gì trong một số môi trường khác, nhưng bằng cách sử dụng CommonJs, đó là một vấn đề bởi vì mọi mô-đun CommonJs là mới Vì vậy, tốt nhất là viết mô-đun "utils" với các hàm trợ giúp và " yêu cầu "nó bất cứ nơi nào bạn cần nó."

//utils.js 
exports.trim = function(str) { 
    return str.replace(/^\s+|\s+$/g,""); 
}; 

- Ivan Škugor

4

Chỉ cần đảm bảo nó được xác định trước bất kỳ mã nào sẽ cố gắng sử dụng và bạn sẽ được đặt!

+0

Cảm ơn câu trả lời của Sean. Nhưng không có quy ước nào về cách thức/nơi tôi nên làm điều này? – junior

+0

Nếu bạn có một thư viện mà bạn sử dụng trên tất cả các nơi, bạn luôn có thể đặt nó trong đó. Tôi thường định nghĩa các hàm bổ sung vào các lớp dựng sẵn ở trên cùng của bất kỳ thư viện nào mà tôi đưa vào, để giữ cho mọi thứ gọn gàng và gọn gàng. Cũng giống như cách tôi định nghĩa các thuộc tính CSS của các thẻ HTML ở đầu tệp CSS và các lớp/id sau. –

5

dụ của bạn là một trong những tốt để sử dụng, bởi vì hầu hết các trình duyệt có phương pháp cắt riêng của họ, vì vậy tốt nhất để kiểm tra sự có nguồn gốc trước khi thêm của riêng bạn:

String.prototype.trim= String.prototype.trim || function(){ 
    return this.replace(/^\s+/, '').replace(/\s+$/, ''); 
} 
Các vấn đề liên quan