Bạn có thể làm như thế này
var a, b
var foo = {
a: a = 5,
b: b = 6,
c: a + b
}
Phương pháp đó đã được chứng minh là hữu ích với tôi khi tôi phải tham chiếu đến đối tượng mà một hàm ban đầu được khai báo. Sau đây là một ví dụ tối thiểu về cách tôi sử dụng nó:
function createMyObject() {
var count = 0, self
return {
a: self = {
log: function() {
console.log(count++)
return self
}
}
}
}
Bằng cách xác định self là đối tượng chứa hàm in, bạn cho phép hàm tham chiếu đến đối tượng đó. Điều này có nghĩa là bạn sẽ không phải 'liên kết' chức năng in với một đối tượng nếu bạn cần chuyển nó sang một nơi khác.
Nếu bạn muốn, thay vào đó, sử dụng this
như minh họa dưới đây
function createMyObject() {
var count = 0
return {
a: {
log: function() {
console.log(count++)
return this
}
}
}
}
Sau đó, đoạn mã sau sẽ đăng nhập 0, 1, 2 và sau đó báo lỗi
var o = createMyObject()
var log = o.a.log
o.a.log().log() // this refers to the o.a object so the chaining works
log().log() // this refers to the window object so the chaining fails!
Bằng cách sử dụng phương thức tự bạn đảm bảo rằng bản in sẽ luôn trả về cùng một đối tượng bất kể bối cảnh mà hàm được chạy. Đoạn mã trên sẽ chạy tốt và đăng nhập 0, 1, 2 và 3 khi sử dụng phiên bản tự của createMyObject()
.