$
là cách thay thế, viết gọn hơn cho jQuery
, nên $()
và jQuery()
là như nhau.
$.fn
là 1 object chứa tất cả function liên quan đến jQuery.
Tuy nhiên init
không phải là property của $.fn
, Để hiểu hơn khi truy xuất 1 property của 1 object, JS engine sẽ gọi đến built-in [[GET]]
với các tham số và object và tên property cần truy xuất, $.fn.init
tương đương cách gọi [[GET]]($.fn, 'init')
.
Phần hiện thực của [[GET]]($.fn, 'init')
kiểm tra như sau:
-
init
có phải là 1 property của $.fn
không, kết quả không có init
(như mình nói ở trên).
- Lên 1 bậc prototype chain, kiểm tra
init
có phải là property của $.fn.__proto__
hay không? $.fn.__proto__
và jQuery.prototype
cùng trỏ tới 1 object chung. Trong jQuery.prototype
có property tên là init
. Kết quả trả về giá trị của property init
là function object (callable object).
Lời gọi hàm $()
sẽ gọi tới $.fn.init()
.
Do đó, các functions như $()
, $.fn.init()
, jQuery()
, jQuery.prototype.init()
đều thực hiện như nhau.