Trong ES6, cả hai đều hợp pháp:phương pháp trong các đối tượng ES6: sử dụng chức năng mũi tên
var chopper = {
owner: 'Zed',
getOwner: function() { return this.owner; }
};
và, như viết tắt:
var chopper = {
owner: 'Zed',
getOwner() { return this.owner; }
}
Có thể sử dụng các chức năng mũi tên mới cũng ? Trong cố gắng một cái gì đó giống như
var chopper = {
owner: 'John',
getOwner: => { return this.owner; }
};
hoặc
var chopper = {
owner: 'John',
getOwner: => (this.owner)
};
tôi nhận được một thông báo lỗi cho thấy rằng phương pháp này không có quyền truy cập vào this
. Đây có phải chỉ là một vấn đề cú pháp, hoặc bạn không thể sử dụng các phương pháp đường ống mỡ bên trong các đối tượng ES6?
Một trong những điểm lớn nhất của cú pháp hàm mới là nó xử lý 'điều này' khác nhau. Nó được định nghĩa bởi môi trường từ vựng trong đó hàm được tạo ra, có nghĩa là giá trị 'this' mà bạn tạo biến' chopper' sẽ là giá trị 'this' của hàm này. Nói cách khác, nó sẽ không tham chiếu đến đối tượng 'chopper'. –
đã nhận được nó, có cách nào để viết lại chức năng này để nó đề cập đến 'chủ sở hữu' bên trong chopper? – fox
Trong khi sử dụng cú pháp mũi tên chất béo? Chỉ khi bạn thay đổi giá trị 'this' này trước tiên bằng cách tạo đối tượng' chopper', sau đó thực hiện nhiệm vụ trong một hàm có 'this' trỏ đến đối tượng đó. Điều này có thể được thực hiện khá sạch sẽ với một hàm xây dựng. –