Tuesday, November 9, 2010

Tạo object trong Javascript

Trước khi bắt đầu nói về các đối tượng (object) trong Javascript (viết tắt là JS), thì cần phải lưu ý rằng JS không phải là ngôn ngữ lập trình hướng đối tượng, nhưng nó lại cho phép việc đó.

Cách cơ bản

JS hỗ trợ cách tạo object rất giống với các loại khác trong JS như mảng (array), số (number),…
var kha = new Object();
Chúng ta đã tạo được một object mới. và có thể thêm thuộc tính dễ dàng (bao gồm cả việc thêm function)
kha.name = "Nguyen Kim Kha";
kha.run = function(param) {
    alert("Param: "+param);
};
Và bạn có thể thực thi object này.
document.write("Name: "+kha.name);
kha.run("We are one!");

Sử dụng đúng chuẩn object

Các đúng chuẩn của object, và cũng là chuẩn theo JSON (JavaScript Object Notation), đó là khai báo tường minh một object. Ví dụ:
kha = {
    run: function(param) {
        alert("Param: "+param);
    },
    name: "Nguyen Kim Kha"
};
Tuy nhiên có một vấn đề nhỏ cần lưu ý, là giữa các thuộc tính/hàm, bạn phải có dấu phẩy và sau thuộc tính cuối cùng, bạn không nên có dấu phẩy (để đảm bảo là không bị lỗi trên IE).

Sử dụng hàm

Khác với các ngôn ngữ lập trình khác, bạn có thể tạo object mới bằng cách dùng hàm với câu lệnh return. Ví dụ:
kha = function(){
    run = function(param) {
        alert("Param: "+param);
    };
    name: "Nguyen Kim Kha";
    return this;
}();
Khi đó bạn có thể sử dụng object này ở bất cứ đâu (kể cả trong các thẻ <a>, hoặc các sự kiện onclick,…).

Nâng cao

Một khi đã có một object, bạn có thể thêm thuộc tính/hàm cho nó, theo cách đơn giản, với điều kiện thuộc tính/hàm này chưa tồn tại trong object đó:
kha.say = function(){
    this.run("We are one!");
};
Dĩ nhiên là đôi lúc bạn muốn override một hàm nào đó (tức là tạo hàm mà hàm này đã tồn tại), và khi đó chúng ta dùng prototype, được hỗ trợ ở hầu hết các trình duyệt.
kha.prototype.run = function(param) {
    alert("New function with param: "+param);
};
Và còn nhiều thủ thuật với object trên JS khác nữa mà tôi không thể nói ở đây (vì phức tạp quá).
—————
Bài viết thuộc sở hữu cá nhân của tác giả. Không ai được quyền chép nguyên văn bài viết, nhưng có thể dẫn trích vài đoạn nào đó, nhưng phải ghi nguồn rõ ràng và dẫn link đến bài viết này.

No comments:

Post a Comment

Biểu mẫu liên hệ

Name

Email *

Message *