2016-05-06 24 views
5

Giá trị của this trong một hàm được nhập, được gọi là từ nhập không gian tên là gì? (Theo spec ECMA)Nhập không gian tên ES6: hành vi của "điều này"

// module.js 
export function fun() { 
    return this; 
} 

// main.js 
import * as module from "./module.js"; 

let x = module.fun(); // What's the value of x here? 

tôi đoán sẽ là: Đó là đối tượng module, nhưng chưa tìm được câu trả lời rõ ràng cho điều này trong spec. Liệu các hành vi bình thường áp dụng ở đây hoặc là có một cái gì đó đặc biệt trong các mô-đun ES6 cho nhập khẩu không gian tên?

+0

Trong Babel nó thực sự trả về đối tượng 'module', tuy nhiên tôi không biết đặc điểm kỹ thuật nói gì về nó. –

+0

Hãy nhớ rằng 'this' là thuộc tính của ngữ cảnh thực thi chứ không phải chính đối tượng. – Kashif

Trả lời

2

Dựa trên việc đọc thông số, nó sẽ là đối tượng lạ không gian tên mô-đun (mà bạn đã gắn với tên module trong ví dụ của mình). Nói cách khác, túi xuất khẩu. Vì vậy, trong ví dụ của bạn, tôi tin rằng bạn có thể gọi x.fun() trong tuyên bố tiếp theo.

Theo như tôi có thể nhìn thấy ...

3

Không, không có hành vi đặc biệt nào ở đây. Module namespaces có thể là các đối tượng kỳ lạ mà đại biểu tất cả các truy cập vào một số nội bộ và đó là khá nhiều bất biến, nhưng họ vẫn chỉ là đối tượng. Phương thức invocations trên chúng không hoạt động khác với bất kỳ đối tượng nào khác.

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