Giáo trình Nhập môn JavaScript

Với HTML and Microsoft FrontPage bạn đã biết cách tạo ra trang Web - tuy nhiên chỉ

mới ở mức biểu diễn thông tin chứ ch-a phải là các trang Web động có khả năng đáp ứng

các sự kiện từ phía ng-ời dùng. Hãng Netscape đã đ-a ra ngôn ngữ script có tên là

LiveScript để thực hiện chức năng này. Sau đó ngôn ngữ này đ-ợc đổi tên thành JavaScript

để tận dụng tính đại chúng của ngôn ngữ lập trình Java. Mặc dù có những điểm t-ơng

đồng giữa Java và JavaScript, nh-ng chúng vẫn là hai ngôn ngữ riêng biệt.

JavaScript là ngôn ngữ d-ới dạng script có thể gắn với các file HTML. Nó không đ-ợc

biên dịch mà đ-ợc trình duyệt diễn dịch. Không giống Java phải chuyển thành các mã dễ

biên dịch, trình duyệt đọc JavaScript d-ới dạng mã nguồn. Chính vì vậy bạn có thể dễ

dàng học JavaScript qua ví dụ bởi vì bạn có thể thấy cách sử dụng JavaScript trên các

trang Web.

JavaScript là ngôn ngữ dựa trên đối t-ợng, có nghĩa là bao gồm nhiều kiểu đối t-ợng, ví dụ

đối t-ợng Math với tất cả các chức năng toán học. Tuy vậy JavaScript không là ngôn ngữ

h-ớng đối t-ợng nh- C++ hay Java do không hỗ trợ các lớp hay tính thừa kế.

JavaScript có thể đáp ứng các sự kiện nh- tải hay loại bỏ các form. Khả năng này cho phép

JavaScript trở thành một ngôn ngữ script động.

pdf78 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2681 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình Nhập môn JavaScript, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 một hàm thì mỗi lần gọi hàm, đối t-ợng sẽ đ-ợc khởi 
tạo một lần 
Giả sử bạn có câu lệnh sau: 
if (condition) 
 x={hi: ”there.”} 
Trong tr-ờng hợp này, JavaScript sẽ tạo ra một đối t-ợng và gắn nó vào biến x nếu 
biểu thức condition đ-ợc đánh giá là đúng 
Còn ví dụ sau tạo ra một đối t-ợng myHonda với 3 thuộc tính: 
myHonda={color:”red”,wheels:4,engine:{cylinder:4,size:2.2}} 
Chú ý rằng thuộc tính engine cũng là một đối t-ợng với các thuộc tính của nó 
Trong Navigator 4.0, bạn cũng có thể sử dụng một khởi tạo để tạo một mảng. Cú 
pháp để tạo mảng bằng cách này khác với tạo đối t-ợng: 
arrayName=[element0, element1,...,elementN] 
Trong đó, arrayName là tên của mảng mới, và mỗi elementI là giá trị của phần 
tử ở vị trí đó của mảng. Khi bạn tạo một mảng bằng cách sử dụng ph-ơng pháp khởi tạo, 
thì nó sẽ coi mỗi giá trị là một phần tử trên mảng, và chiều dài của mảng chính là số các 
tham số. 
JavaScript 73 
Khoa Toan tin, Đại học Quốc gia Hà Nội 
Bạn không cần phải chỉ định rõ tất cả các phần tử trên mảng mới. Nếu bạn đặt hai 
dấu phẩy vào hàng, thì mảng sẽ đ-ợc tạo với những chốn trống cho những phần tử ch-a 
đ-ợc định nghĩa nh- ví dụ d-ới đây: 
Nếu một mảng đ-ợc tạo bằng cách khởi tạo(initializer) ở mức cao nhất, mỗi lần 
mảng đó xuất hiện trong các biểu thức, JavaScript sẽ đánh giá lại nó một lần. Ngoài ra, 
nếu sử dụng việc khởi tạo này trong một hàm thì mỗi lần gọi hàm, mảng sẽ đ-ợc khởi tạo 
một lần 
Ví dụ1: Tạo một mảng coffees với 3 phần tử và độ dài của mảng là 3: 
coffees = [“French Roast”,”Columbian”,”Kona”] 
Ví dụ 2: Tạo ra một mảng với 2 phần tử đ-ợc khởi đầu và một phần tử rỗng: 
fish = [“Lion”, ,” Surgeon”] 
Với biểu thức này, fish[0] là “Lion”, fish[2] là ” Surgeon”, v¯ 
fish[2] ch-a đ-ợc định nghĩa 
5.1.2. Sử dụng một hàm xây dựng(Constructor Function) 
Bạn có thể tạo ra đối t-ợng của riêng mình với hai b-ớc sau: 
1. Định nghĩa kiểu của đối t-ợng bằng cách viết một hàm xây dựng. 
2. Tạo ra một cá thể của đối t-ợng đó bằng toán tử new 
Để định nghĩa một kiểu đối t-ợng, ta phải tạo ra một hàm để chỉ định rõ tên, các 
thuộc tính và các cách thức của kiểu đối t-ợng đó. Ví dụ giả sử bạn muốn tạo một kiểu đối 
t-ợng ô tô với tên là car, có các thuộc tính make, model, year và color, để thực hiện việc 
này có thể viết một hàm nh- sau: 
function car(make, model, year ){ 
 this.make = make 
 this.model = model 
 this.year = year 
} 
 Chú ý việc sử dụng toán tử this để gán giá trị cho các thuộc tính của đối t-ợng phải 
thông qua các tham số của hàm. 
Ví dụ, bạn có thể tạo một đối t-ợng mới kiểu car nh- sau: 
mycar = new car(“Eagle”,”Talon TSi”,1993) 
Câu lệnh này sẽ tạo ra đối t-ợng mycar và liên kết các giá trị đ-ợc đ-a vào với các 
thuộc tính. Khi đó giá trị của mycar.make l¯ “Eagle”, giá trị cða mycar.model l¯ “Talon 
TSi”, v¯ mycar.year là một số nguyên 1993....Cứ nh- vậy bạn có thể tạo ra nhiều đối 
t-ợng kiểu car. 
Một đối t-ợng cũng có thể có những thuộc tính mà bản thân nó cũng là một đối 
t-ợng. Ví dụ bạn định nghĩa thêm một đối t-ợng khác là person nh- sau: 
function person(name, age, sex){ 
 this.name=name 
 this.age=age 
 this.sex=sex 
} 
JavaScript 74 
Khoa Toan tin, Đại học Quốc gia Hà Nội 
Và sau đó ta tạo ra hai ng-ời mới: 
rank = new person(“Rank McKinnon”,33,”M”) 
ken = new person(“Ken John”,39,”M”) 
Bây giờ bạn định nghĩa lại hàm xây dựng car nh- sau: 
function car(make, model, year,owner ){ 
 this.make = make 
 this.model = model 
 this.year = year 
 this.owner = owner 
} 
Nh- vậy bạn có thể tạo đối t-ợng kiểu car mới: 
car1 = new car(“Eagle”,”Talon TSi”,1993,rank) 
car2 = new car(“Nissan”,”300ZX”,1992,ken) 
Nh- vậy, thay vì phải qua một xâu ký tự hay một giá trị số khi tạo đối t-ợng, ta chỉ cần 
đ-a hai đối t-ợng đã đ-ợc tạo ở câu lệnh trên vào dòng tham số của đối t-ợng mới tạo. Ta 
cũng có thể lấy đ-ợc thuộc tính của đối t-ợng owner bằng câu lênh sau: 
 car2.owner.name 
Chú ý rằng bạn cũng có thể tạo ra một thuộc tính mới cho đối t-ợng tr-ớc khi định nghĩa 
nó, ví dụ: 
car1.color=”black” 
Nh- vậy, thuộc tính color của đối t-ợng car1 được gán l¯ “black”. Tuy nhiên, nó sẽ không 
gây tác động tới bất kỳ một đối t-ợng kiểu car nào khác. Nếu muốn thêm thuộc tính cho 
tất cả các đối t-ợng thì phải định nghĩa lại hàm xây dựng đối t-ợng. 
5.1.3. Lập mục lục cho các thuộc tính của đối t-ợng 
 Trong Navigator 2.0, bạn có thể gọi thuộc tính của một đối t-ợng bằng tên thuộc 
tính hoặc bằng số thứ tự của nó. Tuy nhiên từ Navigator 3.0 trở đi, nếu ban đầu bạn định 
nghĩa một thuộc tính bằng tên của nó, bạn sẽ luôn luôn phải gọi nó bằng tên, và nếu bạn 
định nghĩa một thuộc tính bằng chỉ số thì bạn cũng luôn luôn phải gọi tới nó bằng chỉ số. 
Điều này ứng dụng khi bạn tạo một đối t-ợng với những thuộc tính của chúng bằng 
hàm xây dựng (nh- ví dụ về kiểu đối t-ợng car ở phần tr-ớc) và khi bạn định nghĩa những 
thuộc tính của riêng một đối t-ợng (nh- mycar.color=”red”). Vì vậy nếu bạn định 
nghĩa các thuộc tính của đối t-ợng ngay từ đầu bằng chỉ số nh- mycar[5]=”25 mpg”, 
bạn có thể lần l-ợt gọi tới các thuộc tính khác nh- mycar[5]. 
Tuy nhiên điều này là không đúng đối với những đối t-ợng t-ơng ứng của HTML 
nh- mảng form. Bạn có thể gọi tới các đối t-ợng trong mảng bởi số thứ tự hoặc tên của 
chúng. Ví dụ thẻ thứ hai trong một document có thuộc tính NAME là 
“myform” thì bạn có thể gọi tới form đó bºng document.form[1] hoặc 
document.form[“myForm”] hoặc document.myForm 
JavaScript 75 
Khoa Toan tin, Đại học Quốc gia Hà Nội 
5.1.4. Định nghĩa thêm các thuộc tính cho một kiểu đối 
t-ợng 
Bạn có thể thêm thuộc tính cho một kiểu đối t-ợng đã đ-ợc định nghĩa tr-ớc bằng 
cách sử dụng thuộc tính property. Thuộc tính đ-ợc định nghĩa này không chỉ có tác dụng 
đối với một đối t-ợng mà có tác dụng đối với tất cả các đối t-ợng khác cùng kiểu.Ví dụ 
sau thực hiện thêm thuộc tính color cho tất cả các đối t-ợng kiểu car, sau đó gắn một giá 
trị màu cho thuộc tính color của đối t-ợng car1: 
car.prototype.color=null 
car1.color=”red” 
5.1.5. Định nghĩa các cách thức 
Một cách thức là một hàm đ-ợc liên kết với một đối t-ợng. Bạn định nghĩa một 
cách thức cũng có nghĩa là bạn định nghĩa một hàm chuẩn. Bạn có thể sử dụng cú pháp 
sau để gắn một hàm cho một đối t-ợng đang tồn tại: 
object.methodname = function_name 
Trong đó object là đối t-ợng đang tồn tại, methodname là tên cách thức và 
function_name là tên hàm 
Bạn có thể gọi cách thức này từ đối t-ợng nh- sau: 
object.methodname() 
Bạn có thể định nghĩa cách thức cho một kiểu đối t-ợng bằng cách đ-a cách thức 
đó vào trong hàm xây dựng đối t-ợng. Ví dụ bạn có thể định nghĩa một hàm có thể định 
dạng và hiển thị các thuộc tính của các đối t-ợng kiểu car đã xây dựng ở phần tr-ớc: 
function displayCar () { 
var result = “Abeautiful”+this.year+ “ ”+ this.make + 
“ ”+ this.model 
document.write(result) 
} 
Bạn có thể thêm cách thức này vào cho đối t-ợng car bằng cách thêm dòng lệnh 
sau vào hàm định nghĩa đối t-ợng 
this.displayCar= displayCar; 
Nh- vậy có thể định nghĩa lại đối t-ợng car nh- sau: 
function car(make, model, year,owner ){ 
 this.make = make 
 this.model = model 
 this.year = year 
 this.owner = owner 
 this.displayCar= displayCar 
} 
 Sau đó, bạn có thể gọi cách thức displayCar đối với mỗi đối t-ợng: 
car1.displayCar() 
car2.displayCar() 
JavaScript 76 
Khoa Toan tin, Đại học Quốc gia Hà Nội 
5.1.6. Sử dụng cho các tham chiếu đối t-ợng (Object 
References) 
 JavaScript có một từ khoá đặc biệt là this mà bạn có thể sử dụng nó cùng với một 
cách thức để gọi tới đối t-ợng hiện thời. Ví dụ, giả sử bạn có một hàm validate dùng để 
xác nhận giá trị thuộc tính của một đối t-ợng nằm trong một khoảng nào đó: 
function validate(obj, lowval, hival){ 
 if ( (obj.valuehival) ) 
 alert(“Invalid value!”) 
} 
 Sau đó bạn có thể gọi hàm validate từ mỗi thẻ sự kiện onChange: 
<INPUT TYPE=”TEXT” NAME=”AGE” SIZE=3 
onChange=”validate(this,18,99)” > 
Khi liên kết với một thuộc tính form, từ khoá this có thể gọi tới form cha của đối 
t-ợng hiện thời. Trong ví dụ sau, myForm có chứa đối t-ợng Text và một nút bấm. Khi 
ng-ời sử dụng kích vào nút bấm, tr-ờng text sẽ hiển thị tên form. Thẻ sự kiện onClick của 
nút bấm sử dụng this.form để gọi tới form cha là myForm. 
Form name:<INPUT TYPE=”text” NAME=”text1” 
VALUE=”Beluga”> 
<INPUT TYPE=”button” NAME=”button1” 
value=”Show Form Name” 
onClick=”this.form.text1.value=this.form.name”> 
5.1.7. Xoá đối t-ợng 
Trong JavaScript cho Navigator 2.0, bạn không thể xoá các đối t-ợng-chúng vẫn 
tồn tại trong khi bạn đã rời khỏi trang đó. Trong khi JavaScript cho Navigator 3.0 cho 
phép bạn có thể xoá một đối t-ợng bằng cách đặt cho nó trỏ tới giá trị Null (nếu nh- đó là 
lần cuối cùng gọi tới đối t-ợng). JavaScript sẽ đóng đối t-ợng đó ngay lập tức thông qua 
biểu thức gán. 
JavaScript 77 
Khoa Toan tin, Đại học Quốc gia Hà Nội 
6. Bảng tổng kết các từ khoá 
Sau đây là các từ đựoc định nghĩa là một phần trong ngôn ngữ JavaScript và không đ-ợc 
sử dụng là tên biến: 
abstract eval int static 
boolean extends interface super 
break false long switch 
byte final native synchrinized 
case finally new this 
catch float null throw 
char for package throws 
class function parseFloat transient 
const goto parseInt true 
continue if private try 
default implements protected var 
do import public void 
double in return while 
else instanceof short with 
JavaScript 78 
Khoa Toan tin, Đại học Quốc gia Hà Nội 
7. Tổng kết 
Nh- vậy, tài liệu không những đã giới thiêu sơ qua về JavaScript, mà nó còn là sách tham 
khảo hết sức hữu ích để phát triển ứng dụng của bạn. 
Bạn có thể tham khảo toàn diện JavaScript trong quyển Teach Yourself JavaScript in 14 
Days, hoặc JavaScript Guide 
Do JavaScript là ngôn ngữ còn mới và có sự thay đổi nhanh chóng, bạn nên đến với trang 
Web của hãng Netscape (  ) để có các thông tin mới nhất về 
ngôn ngữ này. 

File đính kèm:

  • pdfTAILIEU_JAVASCRIPT.pdf
Tài liệu liên quan