2015-11-09 38 views
0

我想用JS中的函数做一个函数,并且在函数中使用另一个函数或变量。例如与汽车,我想这样称呼它:JS:如何制作嵌套函数?

var car1 = new car("blue"); 
var curPosX = car1.position.x; 
var curPosY = car1.position.y; 

var car2 = new car("red"); 
car2.motor.start(); 
car2.motor.moveTo(curPosX, curPosY); 
car2.color = "red"; 
car2.window[0].open(); 
五言的

不与代码,以使汽车的举动等,但只是一个例子,我怎样才能使这一点,这样我就可以把它与

function.functionInside.anotherFunction(); 

在此先感谢!

+0

您可能会发现[Classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)有用。 – showdev

+0

谢谢,问题解决了! – blobliebla

回答

0

下面是我会设置它:

var motor = function() { 
 
    this.posX = 0; 
 
    this.posY = 0; 
 
}; 
 

 
motor.prototype.start = function() { 
 
    console.log("motor started!"); 
 
}; 
 

 
motor.prototype.moveTo = function(x, y) { 
 
    this.posX = x; 
 
    this.posY = y; 
 
    console.log("motor moved to (" + x + ", " + y + ")"); 
 
}; 
 

 
var windowC = function() { 
 
    this.state = false; //closed 
 
}; 
 

 
windowC.prototype.open = function() { 
 
    this.state = true; 
 
    console.log("window opened"); 
 
}; 
 

 
var car = function(color) { 
 
    this.color = color; 
 
    this.position = { 
 
    x: 0, 
 
    y: 0 
 
    }; 
 
    this.motor = new motor(); 
 
    this.window = [new windowC(), new windowC(), new windowC(), new windowC()]; 
 
}; 
 

 
var car1 = new car("blue"); 
 
var curPosX = car1.position.x; 
 
var curPosY = car1.position.y; 
 

 
var car2 = new car("red"); 
 
car2.motor.start(); 
 
car2.motor.moveTo(curPosX, curPosY); 
 
car2.color = "red"; 
 
car2.window[0].open();

输出:

motor started! 
motor moved to (0, 0) 
window opened 

Here's一个良好的阅读。 ECMA 6支持类,所以将来会更容易。

0

我会建议寻找类,然后你可以有你的主要对象内的对象,你可以调用你的函数。即)存储在汽车物体内部的运动物体。

编辑:

这是你正在想的最简单的例子。

var car = { 
    motor: { 
     start: function() { return "started motor";} 
    } 
}; 

alert(car.motor.start()); 
+0

@blobliebla我编辑了我的答案,提供了一些简单的代码。阅读更多关于物体的信息,祝你好运。 – carter

+0

谢谢,您能否在电机对象中添加一个更多的功能,以便我知道它如何与多种功能协同工作? – blobliebla