2016-05-02 7 views
-2

javascriptでクラスを定義する正しい方法はどれですか?javascriptでクラスを定義する

classキーワードを使用しています。 functionキーワードを使用して

var c = class { 
constructor(){} 
} 

それとも

var c = function(){ 
} 

私はいくつかの記事を見て、私は新しい方法をクラスのキーワードをされ使用して、関数キーワードを使用すると、古い方法だと思います。

+1

、使用したいのECMAScript標準に依存関数、そして最初のものはエラーのようです? – adeneo

+0

ほとんどの主要なブラウザ(IE11、たとえば、Windows 7で利用可能なIEの最新バージョン)をサポートする予定の場合は、 'class'を使用しないでください。それはうまくサポートされていません。これはECMAScript 6で導入されました。 – blex

+0

[classes on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)で読んでください。新しいもので、サポートされていませんすべてのブラウザはまだ – adeneo

答えて

2

単純に行く:

class myClass { 
    constructor(foo, bar) { 
     this.foo = foo; 
     this.bar = bar; 
    } 

    /* Whatever else */ 

} 

これは...あなたはES6を書きたい

MDNを検討している:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes

ES5は、ここであなたが望むかもしれない方法でhttps://github.com/addyosmani/es6-equivalents-in-es5#classesから取った例なら問題に取り組む

ES6:

class Hello { 
    constructor(name) { 
    this.name = name; 
    } 

    hello() { 
    return 'Hello ' + this.name + '!'; 
    } 

    static sayHelloAll() { 
    return 'Hello everyone!'; 
    } 
} 

class HelloWorld extends Hello { 
    constructor() { 
    super('World'); 
    } 

    echo() { 
    alert(super.hello()); 
    } 
} 

var hw = new HelloWorld(); 
hw.echo(); 

alert(Hello.sayHelloAll()); 

ES5(概算):

function Hello(name) { 
    this.name = name; 
} 

Hello.prototype.hello = function hello() { 
    return 'Hello ' + this.name + '!'; 
}; 

Hello.sayHelloAll = function() { 
    return 'Hello everyone!'; 
}; 

function HelloWorld() { 
    Hello.call(this, 'World'); 
} 

HelloWorld.prototype = Object.create(Hello.prototype); 

HelloWorld.prototype.echo = function echo() { 
    alert(Hello.prototype.hello.call(this)); 
}; 

var hw = new HelloWorld(); 
hw.echo(); 

alert(Hello.sayHelloAll()); 
関連する問題