2014-11-11 10 views
5

में एक फ़ंक्शन (संदर्भ द्वारा) में एक चर में पास एक फ़ंक्शन में दायरे में एक चर के संदर्भ में पास करने के लिए एक तरीका है (कोणीय जेएस में) (इसे संशोधित करने के लिए)? मैंने कोशिश की है लेकिन परिवर्तनीय परिवर्तन नहीं होता है। यहाँ मेरी कोडस्कोप

$scope.modifyVar = function (myVariable){ 
myVariable = 92; 
} 

$scope.modifyVar($scope.txtNumberOfChuck); 
+1

वहाँ जावास्क्रिप्ट में संदर्भ द्वारा कोई पास होना जरूरी है, वहाँ एक संदर्भ की एक प्रति के करीब कुछ द्वारा पास है, लेकिन नंबर की तरह आदिम मूल्यों के लिए वहाँ केवल मूल्य से गुजरती है। – adeneo

+0

@adeneo ने जो कहा है उस पर विस्तार: जेएस ** केवल ** पास-दर-मूल्य है, बिलकुल पास कोई संदर्भ नहीं है। जब आप किसी फ़ंक्शन में कुछ पास करते हैं (या इसे एक चर/संपत्ति से दूसरे में असाइन करते हैं), मान की प्रतिलिपि बनाई जाती है और उस मान का स्रोत रिसीवर द्वारा संशोधित नहीं किया जा सकता है। लोग वस्तुओं के संबंध में भ्रमित हो जाते हैं, क्योंकि * मूल्य * चर/गुण धारण जो वस्तुओं (कार्यों सहित) को संदर्भित करता है उसे "ऑब्जेक्ट रेफरेंस" कहा जाता है। लेकिन ऑब्जेक्ट संदर्भ अभी भी मान हैं (उन्हें सबसे बड़ी सरणी में इंडेक्स के रूप में सोचें), और पारित होने पर संदर्भ (वस्तु नहीं) की प्रतिलिपि बनाई जाती है। –

उत्तर

6

आपको Javascript में संदर्भ द्वारा एक चर पारित नहीं कर सकते हैं। हालांकि आप पूरी वस्तु को पार कर सकते हैं और अपने मूल्य बदल सकते हैं।

अपने मामले में आप $ स्कोप ऑब्जेक्ट पास कर सकते हैं और फिर संपत्ति मान संशोधित कर सकते हैं। कुछ इस तरह:

$scope.modifyVar = function (myObj){ 
    myObj.txtNumberOfChuck = 92; 
} 

$scope.modifyVar($scope); 
संबंधित मुद्दे