2017-08-11 24 views
7

Trong Javascript, việc sử dụng a.b(c) hoặc [a.b][0](c) lý do khác là ràng buộc this đối tượng a hoặc không trong khi thực thi mã số a.b.Có đảm bảo rằng `Math.cos (0) === [Math.cos] [0] (0)`?

Tiếp theo lập luận tương tự sử dụng

var z = Math.cos; 
console.log(z(1)); 

thể về mặt lý thuyết là khác nhau từ console.log(Math.cos(1)) nhưng không có vẻ như vậy trong thực tế.

Câu hỏi đặt ra là: là nó đảm bảo theo tiêu chuẩn đó cho các đối tượng được xác định trước như Math, Symbol hoặc Object bối cảnh this là không thích hợp trong việc thực hiện phù hợp?

Với Math câu hỏi có vẻ ngớ ngẩn, vì dường như không có lý do gì phụ thuộc vào ngữ cảnh ... tuy nhiên, ví dụ: Symbol.for là hợp lý để giả định rằng triển khai có thể lưu trữ bảng ký hiệu toàn cầu trong một thành viên đối tượng và trong trường hợp đó sử dụng [Symbol.for][0]("x") sẽ không hoạt động.

Symbol.for thực sự dường như làm việc tốt mà không có bối cảnh trong nút, chrome và firefox, nhưng tôi tự hỏi nếu điều này được đảm bảo hay chỉ là ngẫu nhiên ...

+0

Câu hỏi của bạn dường như giả định rằng đối với thư viện 'Toán' ngữ cảnh' này' có ảnh hưởng đến kết quả, tôi không chắc chắn lý do tại sao Thư viện toán sẽ làm bất cứ điều gì với ngữ cảnh 'này'. Vậy tại sao điều này lại là hậu quả của bạn? – Icepickle

+0

@Icepickle Loại câu hỏi gì vậy? – melpomene

+0

Ràng buộc'this' ảnh hưởng như thế nào đến giá trị trả về của hàm toán học tích hợp js? – chiliNUT

Trả lời

5

Không có gì trong các đặc điểm kỹ thuật của Math object đề cập đến bất kỳ việc sử dụng this value.

Vì các phần khác của đặc tả rõ ràng khi hàm phụ thuộc vào this, tôi tin rằng ngữ cảnh không liên quan đến các chức năng này và bạn có thể gọi chúng một cách an toàn mà không có bất kỳ ngữ cảnh nào.

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