只是为了踢我试图在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