Anda bisa melakukannya seperti ini
var a, b
var foo = {
a: a = 5,
b: b = 6,
c: a + b
}
Metode itu telah terbukti bermanfaat bagi saya ketika saya harus merujuk ke objek yang awalnya dideklarasikan fungsi. Berikut ini adalah contoh minimal bagaimana saya menggunakannya:
function createMyObject() {
var count = 0, self
return {
a: self = {
log: function() {
console.log(count++)
return self
}
}
}
}
Dengan mendefinisikan diri sebagai objek yang berisi fungsi cetak Anda mengizinkan fungsi untuk merujuk ke objek itu. Ini berarti Anda tidak perlu 'mengikat' fungsi cetak ke objek jika Anda harus meneruskannya di tempat lain.
Jika Anda mau, gunakan this
seperti yang diilustrasikan di bawah ini
function createMyObject() {
var count = 0
return {
a: {
log: function() {
console.log(count++)
return this
}
}
}
}
Kemudian kode berikut akan mencatat 0, 1, 2 dan kemudian memberikan kesalahan
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!
Dengan menggunakan metode mandiri Anda menjamin bahwa pencetakan akan selalu mengembalikan objek yang sama terlepas dari konteks di mana fungsi dijalankan. Kode di atas akan berjalan dengan baik dan log 0, 1, 2 dan 3 saat menggunakan versi self createMyObject()
.