Làm thế nào jQuery sẽ cho phép xây dựng của nó để hoạt động như một chức năng chấp nhận lý lẽ khi đó constructor của nó cũng đóng vai trò như một chức năng chấp nhận lập luận?jQuery nguyên mẫu và nhà xây dựng chức năng chaining
Tôi là một chút mới để Javascript, vì vậy cho tôi xin lỗi nếu điều này là một câu hỏi noob, (tôi đã xem xét các nguồn nhưng thật khó để cố gắng phân tích).
Dù sao, ví dụ: $(document).ready(<args>);
Cả hàm tạo $()
và nguyên mẫu ready()
hoạt động như một hàm. Làm sao? Bởi vì nếu tôi cố gắng này:
var $ = function(selector) {
if(selector == document) {
return document;
}
};
$.prototype = {
constructor: $,
ready: function(args) {
if(isDomReady) {
args.apply(document);
} else {
window.onload = args;
}
}
};
var isDomReady = (document.addEventListener || document.readyState == ("complete"|"loaded"|true|4) || document.onreadystatechange()) ? true : false;
$(document).ready(function() { alert("Wibbles!") });
tôi nhận được một lỗi lỗi chưa gặp: Object [đối tượng global] không có phương pháp 'sẵn sàng'
Bạn không chaining các phương pháp bằng cách trả lại 'this' từ 'ready'. –
Tôi biết lý do bạn nhận được thông báo lỗi. $ (Document) chỉ trả về HTMLDocument, mà không có hàm .ready. Nếu $ có thuộc tính "element", đã lưu trữ phần tử tài liệu khi bạn chạy hàm tạo, thì bạn có thể kiểm tra trạng thái sẵn sàng của nó bằng cách truy cập phần tử được lưu trữ trong hàm sẵn sàng. – MattDiamant
@MattDiamant Ahh ... Tôi nghĩ tôi sẽ đọc lại nhận xét đó một vài lần để nghiên cứu. Lol. Nhưng tôi nghĩ tôi hiểu. Cảm ơn. –