Muốn gọi hàm validate() bên ngoài initValidation() mà không cần gọi initValidation().
Code ban đầu:
function initValidation(){ // irrelevant code function validate(_block){ // code } }
Vì function là object, ta gán validate làm property của this (context function):
function initValidation(){ // irrelevant code function validate(_block){ // code console.log(_block); } this.validate = validate; }
Bây giờ initValidation hoạt động như constructor class, validate là method. Gọi:
const v = new initValidation(); v.validate('Hello world');
Ví dụ hoàn chỉnh
function initValidation(){ function validate(_block){ console.log(_block); } this.validate = validate; } const v = new initValidation(); v.validate('Hello world');
Kết quả
Hello world
Pattern này biến function thành constructor function (factory). Cách hiện đại: dùng class hoặc export function riêng. this.validate = validate gán method vào instance.