01/10/2018, 16:55
'fn.init' trong javascript là gì?
E định làm một framework cho riêng mình giống như jquery, đồng thời cũng là một newbie của javascript, mà chưa hiểu những thứ gọi là fn.init là cái gì, các pro có thể giúp em giải đáp được không ạ, e cảm ơn nhiều
(function(){
"use strict";
var $ = function(selector,context){
return new $.fn.init(selector,context)
}
}
})(window)
Bài liên quan
trong phần viết plugin cho jquery nó có giải thích mà https://learn.jquery.com/plugins/basic-plugin-creation/
$
là cách thay thế, viết gọn hơn chojQuery
, 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).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. TrongjQuery.prototype
có property tên làinit
. Kết quả trả về giá trị của propertyinit
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.