मैं इस कोड को एक फ़ंक्शन के साथ रखता हूं, जिसमें मैं एक परिभाषित करने की कोशिश कर रहा हूं array
इसके बाद अगली पंक्ति में इसे धकेलें:
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
मैंने कोशिश की है:
this.values = [].push(value);
तथा
this.values = (this.values || []).push(value);
परंतु विफल हो गया। क्या कोड में कुछ गड़बड़ है .....
उत्तर:
जवाब के लिए 2 № 1आपको सरणी-आरंभीकरण सिंटैक्स याद आ रहा है:
var x = [ 1, 2, 3 ];
आपके मामले में, यह होगा:
this.values = [ value ];
यहां अधिक जानकारी: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
कोड:
var x = ([]).push("y");
ऐसा लगता है कि यह एक सरणी उत्पन्न करना चाहिए और इसके लिए मूल्य को धक्का देना चाहिए। यह ऐरे बनाता है, हालांकि ऐरे में वापस नहीं आता है x
, सरणी की नई लंबाई लौटा दी गई है, अर्थात 1
.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
पुश () विधि किसी सरणी के अंत में एक या अधिक तत्व जोड़ती है और सरणी की नई लंबाई देता है। [जोर मेरा]
जवाब के लिए 2 № 2
बस एक सरणी में मान लें।
function Spot(value) {
this.x = null;
this.y = null;
this.values = [value];
}
var point = new Spot("foo")
console.log(point);
उत्तर № 3 के लिए 1
जिस तरह से आप सरणी बना रहे हैं और धक्का दे रहे हैं value
यह सही है। लेकिन चूंकि यह फ़ंक्शन के अंदर बनाया गया है इसलिए आपको एक्सेस करने की आवश्यकता है this
किसी तरह से कार्य के बाहर वस्तु।
चूंकि आप कुछ भी नहीं लौटा रहे हैं, इसलिए आप इसे कंस्ट्रक्टर कह सकते हैं।
var spot = new Spot()
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
var spot = new Spot();
यदि आप इसे एक निर्माता के रूप में नहीं कहना चाहते हैं तो आप बस वापस आ सकते हैं this
वस्तु।
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
return this;
}