Tài liệu Phát triển Java 2.0: JavaScript dành cho các nhà phát triển Java doc - Pdf 10

Phát triển Java 2.0: JavaScript dành cho các nhà phát
triển Java
Tại sao JavaScript lại trở nên quan trọng
JavaScript được Netscape giới thiệu vào năm 1995 và nó nhanh chóng được công chúng yêu
thích. Lý do có liên quan nhiều đến sự xuất hiện của các trang web như là một nền tảng môi
trường truyền thông thương mại: Với JavaScript, bạn có thể tác động đến hành vi của trang web
trong trình duyệt bằng lập trình. Chỉ điều đó thôi cũng đã thú vị rồi! Việc xác nhận hợp lệ của
dạng HTML và mánh khóe hình ảnh hạn chế đã là vấn đề quan trọng hàng đầu.
Kể từ đó, JavaScript đã trải qua một vài thay đổi. Vào lúc đó Netscape đã có một sản phẩm là
Netscape Application Server (Máy chủ ứng dụng Netscape), dựa trên JavaScript phía máy chủ để
xây dựng các ứng dụng web. Vài năm sau đó, sự ra đời của Ajax và các thư viện tiện ích như
JQuery, Prototype và ExtJS đã tiếp tục châm ngòi cho các mối quan tâm về JavaScript. Gần đây
hơn, JavaScript phía máy chủ đã trở lại với Node.js, một framework I/O dựa trên sự kiện dùng để
xây dựng các ứng dụng web phía máy chủ bằng cách sử dụng công cụ V8 JavaScript của Google.
Để chăm lo cho tương lai của sản phẩm của mình, Netscape đã gửi JavaScript lên tổ chức quốc tế
về tiêu chuẩn hóa Ecma. Đó là lý do tại sao một số người gọi JavaScript là ECMAScript. Quan
trọng hơn, đó là lý do tại sao hầu hết các trình duyệt web đều hỗ trợ ECMAScript. Kết quả là,
các ứng dụng web gặp khó khăn đều không sử dụng JavaScript ở đâu đó và JavaScript dường
như không thể thay đổi được điều đó. Hiện tại chưa có ngôn ngữ tạo kịch bản lệnh nào khác
tương thích trình duyệt xuất hiện.
Node.js
Node.js (xem phần Tài nguyên) là một framework ở phía máy chủ, nó dựa trên sự kiện, tính
đồng thời rất cao. Các chương trình Node.js mở rộng quy mô hiệu quả hơn nhiều so với các
chương trình có các luồng, trong khi giải quyết rất nhiều về các vấn đề liên quan đến lập trình
đồng thời. Trong khi Node.js còn tương đối mới, sự đổi mới xung quanh nó khá thú vị. Hiểu biết
JavaScript là chìa khóa để truy cập vào họ các công cụ đang phát triển có liên quan đến Node.js.
Ngày nay, mặc dù tiếng xấu của nó vẫn còn sót lại, nhưng JavaScript được cho là một trong
những ngôn ngữ được sử dụng nhiều nhất (và có ích) trên hành tinh. Nếu bạn là một lập trình
viên Java (hoặc một lập trình viên Ruby, Python hay PHP), có thể là bạn hoặc đã sử dụng
JavaScript hoặc bạn sẽ sử dụng trong tương lai không xa. Việc hiểu biết một số tính năng của
JavaScript có thể giúp bạn xây dựng các ứng dụng web phổ biến hơn tiếp theo. Hơn nữa, nó sẽ


Hình 1. Tương tác với JavaScript trong Google Chrome

Bây giờ chúng ta hãy xem xét một số cú pháp.
Về đầu trang
Các biến JavaScript
JavaScript là một ngôn ngữ khá dễ chịu, ở chỗ nó cho phép bạn tạo ra một vài lỗi lập trình và vẫn
tải trang web. Các phần tử JavaScript thường hỏng thầm lặng, chủ yếu đó là các tin tức tốt lành.
Trang Web ban đầu sẽ vẫn còn thô nếu việc lập trình JavaScript cẩu thả cấm các trang được load.
Điều đó nói rằng, khi chúng ta dựa vào JavaScript để làm những điều khác thường hơn (như việc
cập nhật trạng thái trang không đồng bộ), việc tạo mã JavaScrip không cẩn thận sẽ gây ra nhiều
vấn đề. Vì lý do này mà các nhà phát triển Java nên dành thời gian để hiểu một số khía cạnh nhất
định về cú pháp của JavaScript.
Việc xử lý các biến của JavaScript đặc biệt quan trọng và cần hiểu rõ. Ví dụ, bạn có thể định
nghĩa một biến có tên là foo chẳng hạn hoặc trực tiếp hoặc thông qua việc khai báo var, như
trong Liệt kê 1:

Liệt kê 1. Biến foo

foo = 'foo'
var bar = 'bar'

Biến foo trong Liệt kê 1 là một biến hợp lệ trong JavaScript. Nhưng vì nó thiếu một khai báo
var, nên nó là một biến toàn cục. Do đó cần xem xét cẩn thận các biến được định nghĩa với var
(ví dụ, trong hàm có định nghĩa các biến trong đó).
Nói chung, không nên dùng các biến toàn cục. Vì chúng có thể dễ dàng được truy cập và thay
đổi ở bất cứ đâu trong ứng dụng JavaScript, nên việc sử dụng chúng có thể dẫn đến lỗi mà ta
không hay biết. Vì vậy, khi bạn lập trình JavaScript, đừng quên var trong các biến của mình.
Về đầu trang
Các kiểu nguyên thủy và các đối tượng


> var myArray = ["Hello", 1, true]
> typeof myArray
"object"
> myArray instanceof Array
true

Các Array (Mảng) trong JavaScript rất thích các danh sách theo các ngôn ngữ khác: người ta có
thể tạo ra chúng với kích cỡ tùy ý và có thể chứa bất cứ thứ gì mà bạn muốn đưa vào các mảng
đó. Giống như trong Ruby hoặc Groovy, có thể tạo ra các Array của JavaScript bằng một cú
pháp bằng chữ: []. Hơn nữa, các Array của JavaScript hỗ trợ các phương thức (được hiển thị
trong Liệt kê 5) được bạn dự kiến trong các ngôn ngữ khác có hỗ trợ các danh sách:

Liệt kê 5. Các phương thức của Array

> var myArray = ["Hello", 1, true]
> myArray[0]
"Hello"
> myArray.length
3
> myArray.pop()
true
> myArray
["Hello", 1]
> myArray.pop()
1
> myArray
["Hello"]
> myArray.push("pushed")
2

> var myArray = [1,2]
> console.log(2 * myArray)
> console.log("A" + myArray)

Trong trường hợp này, thông báo log đầu tiên sẽ in ra NaN, trong khi thông báo thứ hai sẽ in ra
A1,2. Trong cả hai trường hợp, mã "đã làm việc" như không có lỗi gì cả — JavaScript chỉ cần
tiếp tục truyền tải. Đây là việc định kiểu yếu tại điểm cực trị của nó. Mã tương tự trong Ruby sẽ
không làm việc như vậy, như trong Liệt kê 8:

Liệt kê 8. Ruby không làm theo cách đó

> array = ["A", "B"]
> ans = 2 * array

Mã Ruby trong Liệt kê 8 sẽ báo lỗi là:
TypeError: Array
can't be coerced into Fixnum

Và nếu tôi cố gắng thêm "A" vào array, nó sẽ tạo ra:
TypeError: can't convert
Array into StringNếu tôi đã dùng thử thủ thuật tương tự trong Groovy, tôi sẽ nhận được kết quả đại loại như:
groovy.lang.MissingMethodException: No signature of method:
java.lang.Integer.plus() is applicable for argument types:
(java.util.ArrayList) values:
[[A, B]]

Vì vậy, bạn có thể thấy các mức định kiểu yếu khác nhau trong hành động. Rõ ràng, nếu có một

Liệt kê 10. Các hàm như là các đối tượng trong JavaScript

> blah.foo()

Trong trường hợp này, bạn sẽ thấy một thông báo lỗi nói rằng rằng foo không phải là một
phương thức đã định nghĩa, như sau:
TypeError: Object function blah() { console.log("blah"); } has no method
'foo'

Bây giờ hãy đọc lại thông báo lỗi đó. Nó nói rằng foo chưa được định nghĩa, điều đó ngụ ý rằng
nếu nó đã được định nghĩa thì mọi thứ đã phải hoạt động được rồi.
Về đầu trang
Các lớp trong JavaScript
JavaScript hỗ trợ các kiểu nguyên thủy, mà tôi đã thảo luận. Nó cũng hỗ trợ các đối tượng, như
Array. JavaScript không hỗ trợ các lớp — ít nhất là không phải theo nghĩa của ngôn ngữ Java cổ
điển. Vì JavaScript là một ngôn ngữ dựa trên nguyên mẫu, bạn không định nghĩa các lớp: thay
vào đó, hành vi được sử dụng lại thông qua việc nhân bản các đối tượng hiện có. Như vậy, trong
JavaScript, bạn không định nghĩa các đối tượng lớp, bạn định nghĩa chúng trong các hàm, sau đó
sử dụng các hàm lồng nhau để định nghĩa hành vi — đại loại bạn đã thấy trong hành động.
Để mô phỏng một lớp, bạn định nghĩa một hàm. Bạn có thể đặt cho nó một tên (đó là, một tên
lớp), chỉ rõ các tham số (như trong một hàm tạo) và thậm chí sử dụng từ khóa .this, về cơ bản
nó có nghĩa là tham khảo một biến trong phạm vi của hàm đó. Hơn nữa có thể đặt bí danh cho
các hàm bên trong để trông giống như các cuộc gọi phương thức.
Để chứng minh, trong Liệt kê 11, tôi sẽ tạo ra một nguyên mẫu Message (còn được gọi là một
lớp) siêu đơn giản. Tôi sẽ cung cấp một vài tham số (thông báo từ ai và thông báo gửi tới ai và
thông báo thực tế) và lớp sẽ đại diện cho thông báo của tôi là JSON.

Liệt kê 11. Các hàm như là các lớp trong JavaScript

function Message(to, from, msg){


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status