JavaScript Kata

JavaScript Kata

Mặc dù công việc của tôi không hề đụng đến JavaScript (JS), nhưng tôi vẫn dành cho ngôn ngữ kịch bản này một tình cảm đặc biệt.

Sáng nay vào thăm http://www.javascriptkata.com/ (blog của một anh lập trình viên JS Hà Lan) thấy có nhiều điều thú vị, xin được kể lại.

JS coi hàm như biến

var f = function() {};

Đặc biệt hơn, khi khai báo hàm mà ko gán cho f như trên:

function f() {}

thì JS cũng tự động tạo ra 1 biến có tên chính là f, cho nên có thể truyền f vào các hàm ví dụ như:

setTimout(f, 100);

Ngoài ra có thể lợi dụng điều này để viết các static method:

function MyClass() { // constructor
}

MyClass.staticMethod1 = function() {
}

Singleton Pattern

var MyClass = {
  property1 : 100,
  property2 : 'Hello'
}

MyClass.method1 = function(arg1, arg2) {
}

Public & Private members

Cám ơn closures:

function MyClass() { // constructor
  // private
  var property1 = 777;
  var method1 = function() {
  }

  // public
  return {
    property2 : 888,
    method2 : function() {
      method1();
      this.property2++;
      alert(property1);
    }
  }

}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s