我知道有很多OO javascript问题,而且我已经阅读了很多资源....但是到目前为止它仍然是我最长的学习曲线!
我不是经典的训练对不起,因此我必须向你们展示c#我想要实现的一个例子。
我希望你能帮忙!
public class Engine
{
public int EngineSize;
public Engine()
{
}
}
public class Car
{
public Engine engine;
public Car()
{
engine = new Engine();
}
}
我并不是真的担心私人/公共场所。上述C#示例的命名约定。
我想知道的是如何在Javascript中复制这个结构?
谢谢!
答案 0 :(得分:15)
function Engine(size) {
var privateVar;
function privateMethod () {
//...
}
this.publicMethod = function () {
// with access to private variables and methods
};
this.engineSize = size; // public 'field'
}
function Car() { // generic car
this.engine = new Engine();
}
function BMW1800 () {
this.engine = new Engine(1800);
}
BMW1800.prototype = new Car(); // inherit from Car
var myCar = new BMW1800();
答案 1 :(得分:3)
所以你真的只想知道一个对象如何包含另一个对象?这是一个非常简单的样本转换:
function Engine()
{
this.EngineSize=1600;
}
function Car()
{
this.engine=new Engine();
}
var myCar=new Car();
答案 2 :(得分:1)
这是ES6的答案:
geoApiContext = new GeoApiContext.Builder()
.apiKey(context.getResources().getString(R.string.api_key))
.build();
DirectionsApiRequest request = DirectionsApi.newRequest(geoApiContext)
.origin(origin)
.destination(dest)
.mode(mode)
.alternatives(altroutes);
try{
DirectionsResult result = request.await();
}catch(Exception e){
e.printStackTrace();
}
(希望我喜欢一些补充)
答案 3 :(得分:0)
function Engine(){ // this is constructor. Empty since Engine do nothing.
}
Engine.prototype.EngineSize=null; // this is public property
function Car(){ // this is Car constructor. It initializes Engine instance and stores it in Engine public property
this.Engine =new Engine();
}
Car.prototype.Engine =null;
何时制作新的Car实例。 Car构造函数将创建Engine的新实例并将其分配给Car实例的Engine属性。