只是爲了踢我試圖在javascript中創建一個簡單的數據對象。這是代碼。在javascript中創建對象
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」的最後一個方法,它返回一個串聯的字符串。在這裏,我嘗試了下面的代碼。
newRover.where = function(){ return "Rover :: "+ name +" is at Location("+xCord+","+yCord+") pointing to "+direction; }();
,然後做對我來說是以下的console.log
console.log(rover1.where);
console.log(rover2.where);
把它扔到了以下錯誤:
cannot access optimized closure
它爲什麼會這麼說?我究竟做錯了什麼?
感謝您的幫助。任何評論意見,將不勝感激! 乾杯
在'var newRover = {}'上忘記了分號和所有函數定義。 – philfreo 2009-12-31 04:43:19
謝謝。會做出改變。 :) – Priyank 2009-12-31 04:50:46
添加分號仍然不能解決問題,雖然 – Priyank 2009-12-31 05:04:36