बस किक्स के लिए मैं जावास्क्रिप्ट में एक साधारण डेटा ऑब्जेक्ट बनाने की कोशिश कर रहा हूं। कोड यहाँ है।जावास्क्रिप्ट में ऑब्जेक्ट क्रिएशन
var roverObject = function(){
var newRover = {};
var name;
var xCord;
var ycord;
var direction;
newRover.setName = function(newName) {
name = newName;
};
newRover.getName = function() {
return name;
};
newRover.setDirection = function(newDirection) {
direction = newDirection;
};
newRover.getDirection = function() {
return direction;
};
newRover.setXCord = function(newXCord) {
xCord = newXCord;
};
newRover.getXCord = function() {
return xCord;
};
newRover.setYCord = function(newYCord) {
yCord = newYCord;
};
newRover.getYCord = function() {
return yCord;
};
newRover.where = function(){
return "Rover :: "+ name +" is at Location("+xCord+","+yCord+") pointing to "+direction;
};
return newRover;
};
rover1 = new roverObject();
rover2 = new roverObject();
rover1.setName("Mars Rover");
rover1.setDirection("NORTH");
rover1.setXCord(2);
rover1.setYCord(2);
console.log(rover1.where());
console.log(rover1);
rover2.setName("Moon Rover");
rover2.setDirection("SOUTH");
rover2.setXCord(1);
rover2.setYCord(1);
console.log(rover2.where());
console.log(rover2);
मेरे पास इस सृजन के आसपास कुछ प्रश्न हैं।
- मैं ऐसी वस्तु बनाना चाहता हूं जहां वस्तु के गुण/गुण निजी हैं और दुनिया के लिए दृश्यमान नहीं हैं। क्या मैं ऐसा करने में सफल हूं? क्या मैं वास्तव में ऑब्जेक्ट विशेषताओं तक नहीं पहुंच सकता?
- वहाँ वस्तु के इस प्रकार बनाने के लिए एक बेहतर तरीका है?
- अगर मैं इस ऑब्जेक्ट का उत्तराधिकारी बनाना चाहता हूं, तो मुझे
newObject.prototype = roverObject
करना चाहिए जो काम करेगा? और यह सब कुछ समझ में आता है। अंत में मुझे एक कठोर समस्या है। Objet "where" की आखिरी विधि पर ध्यान दें जो एक समेकित स्ट्रिंग देता है। यहां मैंने इसके बजाय कोड का पालन करने की कोशिश की।
cannot access optimized closure
यह है कि क्यों कहेंगे:
newRover.where = function(){ return "Rover :: "+ name +" is at Location("+xCord+","+yCord+") pointing to "+direction; }();
और फिर मेरे लिए एक निम्नलिखित console.log
console.log(rover1.where);
console.log(rover2.where);
यह निम्न फेंक दिया त्रुटि किया था? मैं क्या गलत कर रहा हूं?
सभी मदद के लिए धन्यवाद। किसी भी समीक्षा टिप्पणी की भी सराहना की जाएगी! चीयर्स
'वर newRover पर अर्धविराम भूल = {}' और अपने सभी समारोह परिभाषा पर। – philfreo
धन्यवाद। वह बदलाव करेगा। :) – Priyank
जोड़ने अर्धविराम अभी भी समस्या का समाधान नहीं होगा हालांकि निश्चित रूप से – Priyank