Bạn là web developer, bạn đã lập trình nhiều với JavaScript, nhưng có lúc bạn sẽ ngạc nhiên với JavaScript, bởi bạn không ngờ rằng nó là một ngôn ngữ mạnh mẽ và có nhiều điểm thú vị. Bài viết hôm nay được viết với mục đích chia sẻ đôi nét thú vị của JavaScript.
JavaScript cũng có “class”
Thực tế thì JavaScript không có lớp mà chỉ có một loại đối tượng khá lạ lẫm là function. Function trong javascript là một đối tượng, và hơn thế nữa nó có thể đóng vai trò của một class, bởi bạn có thể định nghĩa các thuộc tính, phương thức bên trong nó và có thể tạo ra đối tượng.
var SampleClass = function () { var message = "Hello from Sample Class"; return { shout: function () { alert(message); }, setMessage: function (msg) { message = msg; } }; }; var sample1 = new SampleClass(); sample1.setMessage("Hi there"); sample1.shout(); var sample2 = new SampleClass(); sample2.shout();
Mã lệnh ở trên là cách thức tạo một class bằng Module Pattern, và bạn có thể tạo ra các đối tượng từ SampleClass. Nếu bạn chạy đoạn mã trên, bạn sẽ thấy hai phương thức shout của sample1 và sample2 được gọi và đưa ra hai câu thông báo khác nhau.
Có nhiều cách để tạo ra các class với JavaScript, và tôi sẽ chia sẻ với bạn ở một bài viết khác.
Đối tượng trong JavaScript dễ tùy biến hơn cả C#
Bạn có thể sử dụng literal để tạo một đối tượng “rỗng” trong JavaScript và rồi bạn có thể thêm cho nó thuộc tính hoặc các function sau đó.
Bạn hãy xem mã JavaScript sau đây:
var myObj = {}; myObj["Name"] = "JavaScript"; alert(myObj.Name); myObj.updateName = function(newName) { this.Name = newName; }; myObj.updateName("Cool language"); alert(myObj.Name);
Chỉ với hai ví dụ trên, tôi nghĩ rằng, JavaScript đã phần nào khẳng định được sức mạnh và tính uyển chuyển của nó. Ở ví dụ thứ 2, bạn có thể thấy rằng, đối tượng trong JavaScript có vẻ giống với kiểu dynamic của C# 3.0, nhưng kể cả với kiểu dynamic của C#, bạn cũng khó có thể gán một phương thức cho đối tượng dễ dàng như thế trừ khi bạn sử dụng kiểu delegate.