/ / एक नया सरणी बनाएं और उसे एक पंक्ति में रखें - जावास्क्रिप्ट OOP - जावास्क्रिप्ट, jquery, सरणियाँ

एक नई सरणी बनाएं और इसमें एक पंक्ति में धक्का दें - जावास्क्रिप्ट ओओपी - जावास्क्रिप्ट, jquery, सरणी

मैं इस कोड को एक फ़ंक्शन के साथ रखता हूं, जिसमें मैं एक परिभाषित करने की कोशिश कर रहा हूं 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;
}