JavaScript - 具有对象属性的复合对象

时间:2014-03-30 21:45:13

标签: javascript object properties nested

我想创建一个复合对象(例如device),它将其他对象作为属性(例如position)。 这可以通过使用构造函数在JavaScript中实现吗?

var pos = new position(23,10,15);
var dev = new device(01,"mobile",pos);

//device obj constructor   
function device(id, type, position) {
   this.id=id;
   this.type=type;
   this.position = {position.lat, position.lon, position.alt};
}

//position obj constructor
function position(lat,lon,alt) {
   this.lat=lat;
   this.lon=lon;
   this.alt=alt;
}

我收到错误“SyntaxError:Unexpected token。”

2 个答案:

答案 0 :(得分:2)

是的,这是可能的。您收到SyntaxError,因为您有语法错误。您可以嵌套这样的对象:

device = {
    id: 43,
    type: 34,
    position: { 
       lat: 2,
       lon: 4,
       alt: 343 
       }
    };

如果要将整个对象分配给变量,那么您的函数应如下所示:

function device(id, type, position) {
    this.id=id;
    this.type=type;
    this.position = position;
}

但是如果你只想分配对象的一些变量,你应该这样做:

function device(id, type, position) {
    this.id=id;
    this.type=type;
    this.position = {
        alt: position.alt,
        lon: position.lon,
        lat: position.alt
    };
}

答案 1 :(得分:1)

替换此行

this.position = {position.lat, position.lon, position.alt};

用这个

this.position = position