2014-03-30 58 views
0

我想创建一个将其他对象作为属性(例如position)的复合对象(例如device)。 这可能通过使用构造函数在JavaScript中实现吗?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。”。

+0

你需要使用伪经典方法? (换句话说,你需要使用构造函数吗?) –

+0

如果可能的话,我会更喜欢这种方式。 – LePhleg

回答

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 
    }; 
} 
+0

最后一种方法是我一直在寻找的方法。谢谢! – LePhleg

1

替换该行

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

与此

this.position = position 
+0

不要忘记行尾的';'。 –

+0

javascript是宽恕语言:)。它会在没有';'的情况下运行,' 但是我确实用分号 – alsafoo

+0

结束了我的js语句,但这是绝对正确的,但最好放入它以确保浏览器的JavaScript解释器不会混乱。 –