Javascript – Tìm hiểu và ứng dụng đối tượng arguments

javascript-iconJavascript cung cấp một biến cục bộ với tên “arguments” chứa các tham số được truyền vào hàm. Bạn có thể cần sử dụng đối tượng này khi muốn thực hiện các công việc xử lý tham số một cách linh động bên trong hàm.

Giới thiệu

Đối tượng arguments không phải là mảng nhưng có thể truy xuất bằng index như mảng. Hãy xem đoạn script sau để thấy cách sử dụng:

(function(){
   arguments[0] = "zero";
   console.log(arguments[0]); // "zero"
   return arguments;
})("one","two","three");

Đối tượng arguments được hiển thị trên Chrome Develop Tool như một mảng.

javacscript-arguments-object

Tuy nhiên, bạn có thể chuyển đổi đối tượng này thành mảng bằng cách:

var args = Array.prototype.slice.call(arguments);

Bạn có thể sử dụng các thuộc tính sau của đối tượng argument.

  • arguments.callee: Tham chiếu đến hàm hiện tại (đang chạy).
  • arguments.caller : (Obsolete) Tham chiếu đến hàm gọi hàm hiện tại. Thuộc tính này đã được chuyển sang Function.caller.
  • arguments.length: Số lượng tham số được truyền vào hàm. Nếu cần xác định số lượng tham số mà hàm được khai báo (formal parameter), bạn cần dùng đến thuộc tính Function.length.

Bạn có thể sử dụng “arguments” để đặt tên cho một tham số và sử dụng như bình thường:

function test(arguments){
   return arguments; // one
}
test("one","two");

Tham khảo thêm tại: Mozilla Developer Network – arguments

Ứng dụng

Một trường hợp cho thấy công dụng của đối tượng arguments này chính là việc tạo ra các hàm với số lượng tham số bất kì. Ví dụ ta có một hàm sum() với chức năng tính tổng của các tham số truyền vào:

function sum(){
	var total = 0;
	for (var i = 0; i < arguments.length; i++) {
		total += arguments[i];
	}
	return total;
}
sum(1,2,3,4); // 10

Một ví dụ khác về cách tạo một hàm format tương tự như trong C#. Hàm này được viết dựa trên thư viện Base 2 của Dean Edward.

function format(string) {
    var args = arguments;
    var pattern = RegExp("{([1-" + (arguments.length-1) + "])}", "g");
    return string.replace(pattern, function(match, index) {
        return args[index];
    });
};

format("a {1} and a {2}", "cat", "dog"); // a cat and a dog

Bạn có thể xem thêm các ứng dụng của arguments tại đây:

The JavaScript arguments object…and beyond

Cuối cùng, để “giải trí” một chút, tôi có một câu đố nhỏ dành cho bạn. Tất nhiên câu đố này có liên quan đến nội dung của bài, và bạn cần áp dụng nó để giải quyết. Câu đố là:

- Hãy viết một đoạn script sao cho nó tự in chính nội dung của nó ra.

Và dưới đây là đáp án để bạn đối chiếu hoặc khi bó tay:).
alert((function(){return “alert((“+arguments.callee+”)());”;})());

YinYangIt Blog

About these ads

2 thoughts on “Javascript – Tìm hiểu và ứng dụng đối tượng arguments

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s