2016-07-16 82 views
0

我正在学习如何使用ES6 class,需要了解如何做到这一点从function转换为class一些帮助工作:转换功能ES6类

function MyModel(make, year) { 
    var carType = this; 

    carType.make = make; 

    // function that I have further in code 
    sellCar(carType, year); 
} 

我试图做到的是是这样的:

class MyModel { 
    constructor(make, year) { 
    this.make = make; 
    this.year = year; 

    sellCar(this.make, this.year); 
    } 
} 

我感到困惑的是什么,我怎么办我必须this,我从变量引用参考。我需要吗?我在我的代码的其他部分使用它,但宁愿重构也不这样做。

对我来说,现在的粘滞点是将this分配给carType。如果我将下面的代码放在我的constructor中,我如何从carType指向this

+0

你想完成什么? make和year最有可能是memeber变量,sellCar可能是一种方法(尽管我认为可能不属于类内的方法,而是作用于该类Object的某个方法)。 – akaphenom

+0

阅读此,将帮助你插槽,如果未来的助理需要更新我,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes –

+0

你可以使用'class MyModel {constructor (make,year){/ *相同的函数体在这里* /}}'。无需将变量转换为属性。 – Oriol

回答

1

您的原始代码是不必要的复杂,没有任何意义

function MyModel(make, year) { 
    var carType = this; 

    carType.make = make; 

    // function that I have further in code 
    sellCar(carType, year); 
} 

它可以写成

function MyModel(make, year) { 
    this.make = make; 
    sellCar(this, year); 
} 

在ES6,这是一个简单的变换

class MyModel { 
    constructor (make, year) { 
    this.make = make; 
    sellCar(this, year); 
    } 
} 

ES6 class es只是语法糖,所以功能将是相同的(provi你总是用new关键字(你应该)调用构造函数)

但是什么是sellCar?返回值被丢弃,所以我必须相信sellCar有其他一些副作用。

+0

谢谢。我以为我在那里有不必要的代码,这可能是我的困惑问题。 – pertrai1

+0

不好意思,'sellCar()'是我函数的一部分,只是添加到初始化方法的原型中。 – pertrai1