2016-07-16 100 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