आप इसे इस तरह से कर सकते हैं
var a, b
var foo = {
a: a = 5,
b: b = 6,
c: a + b
}
यह विधि मेरे लिए उपयोगी साबित हुई है जब मुझे उस वस्तु को संदर्भित करना था जिसे एक फ़ंक्शन मूल रूप से घोषित किया गया था। निम्नलिखित इसका एक न्यूनतम उदाहरण है कि मैंने इसका उपयोग कैसे किया:
function createMyObject() {
var count = 0, self
return {
a: self = {
log: function() {
console.log(count++)
return self
}
}
}
}
स्वयं को उस ऑब्जेक्ट के रूप में परिभाषित करके जिसमें प्रिंट फ़ंक्शन होता है आप फ़ंक्शन को उस ऑब्जेक्ट को संदर्भित करने की अनुमति देते हैं। इसका मतलब है कि आपको किसी वस्तु को प्रिंट फ़ंक्शन को 'बाइंड' नहीं करना होगा यदि आपको इसे कहीं और पास करने की आवश्यकता है।
यदि आप, इसके बजाय, this
नीचे दिए गए उदाहरण के रूप में उपयोग करेंगे
function createMyObject() {
var count = 0
return {
a: {
log: function() {
console.log(count++)
return this
}
}
}
}
फिर निम्न कोड 0, 1, 2 को लॉग करेगा और फिर एक त्रुटि देगा
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!
स्वयं की विधि का उपयोग करके आप गारंटी देते हैं कि प्रिंट हमेशा उसी वस्तु को लौटाएगा, जिस संदर्भ में फ़ंक्शन चलता है। ऊपर का कोड ठीक चलेगा और स्व के संस्करण का उपयोग करते समय 0, 1, 2 और 3 लॉग करें createMyObject()
।