Tôi thấy hai mẫu sau khá thường xuyên. Sự khác biệt giữa hai là gì? Khi nào thì thích hợp?
$.pluginName = function(){}
và
$.fn.pluginName = function(){}
Tôi thấy hai mẫu sau khá thường xuyên. Sự khác biệt giữa hai là gì? Khi nào thì thích hợp?
$.pluginName = function(){}
và
$.fn.pluginName = function(){}
Rất đơn giản:
$.fn.pluginName
là một chức năng callable trên tất cả các jQuery.init
* đối tượng. Đây là hữu ích cho việc chức năng chuỗi có thể sử dụng với các đối tượng:
Ví dụ:
$.fn.foo = function(){...};
$('#bar').foo();
Tiếp tục chaining các đối tượng, bạn cần phải trả lại một đối tượng jQuery.init
(có thể là một bản gốc, hoặc một lọc):
$.fn.foo = function(){ return this; };
$.pluginName
là một chức năng có thể được gọi là $.pluginName()
. Điều này rất hữu ích cho việc tạo ra các chức năng tiện ích, hoặc lưu trữ các trạng thái mặc định của một plugin cụ thể.
Ví dụ:
$.foo = function(){...};
bar = $.foo();
* Chức năng máy jQuery (jQuery()
hoặc $()
) thực sự trả về một đối tượng new jQuery.init
Bạn có thể mở rộng đối tượng Jquery.init là gì không? –
@downvoter, quan tâm giải thích? – zzzzBov
Làm cho tinh thần. Cảm ơn! –
$.pluginName
là cho các chức năng tiện ích đã được thêm vào không gian tên jQuery, chẳng hạn như :
$.isArray();
$.extend();
etc
$.fn.pluginName
là cho các chức năng mà làm việc trên danh sách các yếu tố như được trả về bởi các jQuery $(...)
chức năng:
$(...).attr(...);
$(...).first(...);
etc
hỏi rất nhiều lần ..... có thể trùng lặp của [jQuery Plugin Authoring: Tại sao một số làm jQuery.pluginName và những người khác jQuery.fn.pluginName?] (http://stackoverflow.com/questions/538043/jquery-plugin-authoring-why-do-some-do-jquery-pluginname-and-others-jquery-fn-pl) – redsquare
@ hình vuông màu đỏ. Cảm ơn các liên kết. Tôi nhìn, nhưng tôi không thể tìm thấy bất kỳ câu hỏi tương tự. –
Điều này về cơ bản yêu cầu sự khác biệt giữa '$' và '$ .fn'. –