2011-10-31 37 views

Trả lời

5

arguments đang được chuyển làm ngữ cảnh (this), không phải là đối số của hàm.

Tương đương với arguments.slice(), ngoại trừ arguments.slice() không tồn tại.

2

Điều đó tương đương với việc gọi slice() trên một mảng không có đối số - tức là nó trả về một mảng với tất cả các phần tử của mảng ban đầu. Trong trường hợp này, 'đối số' không phải là một mảng thực, vì vậy hãy gọi Array.prototype.slice trên nó có hiệu lực biến nó thành một.

1

Hai chức năng khác nhau đang được gọi. Trong trường hợp đầu tiên

var slice = Array.prototype.slice, 
args = slice.apply(arguments), 

cho lời giải thích rất tham khảo

http://blog.sebarmeli.com/2010/11/12/understanding-array-prototype-slice-applyarguments/

áp dụng phương pháp Array.prototype.slice, đang được gọi, mà sẽ chuyển đổi các đối số truyền cho hàm vào một mảng.

Trong hàm thứ hai, áp dụng phương thức hàm đang được gọi. Việc sử dụng và chi tiết của chức năng này được xác định rõ tại đây http://www.devguru.com/technologies/ecmascript/quickref/apply.html

Các vấn đề liên quan