2011-08-16 47 views
13

Tôi đã tự hỏi một thời gian dài như thế nào jQuery có thể là cả một hàm và một thuộc tính đối tượng.Làm thế nào để jQuery làm cho đối tượng jQuery cả một hàm và một thuộc tính đối tượng?

Bạn có thể sử dụng nó như một chức năng, jQuery (...) và bạn có thể sử dụng nó như một tài sản jQuery.ajax (...)

Làm thế nào bạn có thể đạt được một điều như vậy trong Javascript?

Trả lời

14

chức năng là các đối tượng trong javascript. Vì vậy, bạn có thể có chức năng chính của bạn

var $ = function() { alert('wat'); } 

và sau đó mở rộng nó

$.fadeTo = function() { alert('fadeto'); } 
+0

mhm, tôi hiểu ... Lớp Javascript không có khái niệm về các phương thức tĩnh/động? – SBSTP

+1

@SBSTP: JavaScript không có lớp nào cả, đó là ngôn ngữ nguyên mẫu, không phải là ngôn ngữ dựa trên lớp học. Nó có hàm xây dựng. Các hàm xây dựng tạo ra các đối tượng. –

+0

@TJ -bạn đang đúng, cập nhật – wesbos

9

Bởi vì trong JavaScript, chức năng là các đối tượng có thể có các thuộc tính:

function test() { ... } 

test.a = function() { ... }; 
test.a(); // totally valid 
+0

Ah, tôi đã không nhận ra điều này. Câu hỏi: Trong ví dụ của bạn, có thể 'test.a' được định nghĩa trong khai báo' function test() {...} 'ban đầu, hoặc phải' test.a' được khai báo riêng biệt để có thể truy cập bên ngoài 'test () '? Nói cách khác, có thể định nghĩa thuộc tính 'a' từ bên trong khai báo' test() {...} 'sao cho nó vẫn có thể truy cập từ bên ngoài' test() '? Tôi dường như không thể tìm thấy câu trả lời ở bất cứ nơi nào khác. – Brandon

2

Tôi nghĩ rằng các khái niệm về những gì chính xác là jQuery về khái niệm đang khá lộn xộn. Tôi đã chạy qua liên kết này, giải thích kiến ​​trúc jQuery một cách rất đơn giản và dễ dàng: http://blog.mikecouturier.com/2010/02/beginning-with-jquery-solid-foundation_22.html

Vì vậy, trong ngắn hạn, $ là bí danh cho hàm JavaScript được gọi là 'jQuery' và các phương thức được gọi bằng ký hiệu chấm như $ .trim() là các phương thức tĩnh trên hàm 'JavaScript' jQuery '. Lưu ý rằng một hàm được kế thừa từ đối tượng trong JavaScript và do đó một hàm là một đối tượng trong JavaScript.

Các vấn đề liên quan