jQuery có phương thức extend
rất gọn gàng, kết hợp 2 đối tượng thành một.Tại sao chuyển một đối tượng rỗng vào phương thức mở rộng của jQuery?
Trên jQuery Plugins authoring page họ cho thấy một ví dụ như sau:
var settings = $.extend({
'location' : 'top',
'background-color' : 'blue'
}, options);
Tuy nhiên, tôi đã nhìn thấy nhiều plugin vượt qua một đối tượng rỗng như tham số đầu tiên, như vậy:
var settings = $.extend({}, {
'location' : 'top',
'background-color' : 'blue'
}, options);
As far như tôi có thể nói, cả hai đều làm điều tương tự. Sự khác biệt duy nhất là nếu defaults
sẽ được lưu trữ trong biến riêng của mình:
var defaults = {
'location' : 'top',
'background-color' : 'blue'
},
settings = $.extend({}, defaults, options);
Bằng cách này, bạn luôn có thể truy cập mặc định của bạn mà không có họ được ghi đè bởi các options
.
Dưới đây là câu hỏi: Tại sao rất nhiều tác giả Plugin lựa chọn để vượt qua một đối tượng trống để extend
, ngay cả khi họ không lưu trữ các giá trị mặc định trong một biến?
Tôi có thiếu gì đó không?
vẻ vô nghĩa đối với tôi. Nó làm cho một dân cư, sao chép nó vào một sản phẩm nào, và loại bỏ nó. Ví dụ thứ ba của bạn cho thấy một lý do hợp lệ. Tôi đoán mọi người làm điều đó bởi vì họ không nghĩ về những gì họ đang làm. –
@amnotiam Đó là chính xác những gì tôi đang nghĩ, nhưng tôi đã thấy * rất nhiều plugin * làm điều này. Rõ ràng tôi đang thiếu một cái gì đó ... –
Không, tôi nghĩ rằng rắc rối là bạn đang * nhận * một cái gì đó. –