2016-07-30 9 views
0

私はJSでOOPについて読んでいましたが、従来のOOPとオブジェクトリテラルの間で混乱しました。そして、私はまた、githubで多くの偉大なJSのプロジェクトは、 'OOPの方法'を書かれていないが見つかりました。彼らは、明らかなパターンやシングルトンのようなオブジェクトのレターナルパターンを活用します。私はJavaから来た、今私はそれらを使用するときに、以下のパターンの間にconsufedです。これを使用して、JavaScriptでオブジェクトリテラルを使用しない場合は、

OOP:オブジェクトリテラル道対

function cook(){ 
this.vege = 'something'; 
} 

var Cook = new cook(); 
console.log(Cook.vege = 'something else') 

var cook = { 

vege:"something" 

} 
cook.vege = "something else" 

答えて

0

は、特定の学生のために作成された100個のオブジェクトがある、のは、言ってみましょう:

var Student = function (name) { 
 
    this.name = name; 
 
    this.greet = function() { 
 
    console.log("My name is " + this.name); 
 
    }; 
 
}; 
 

 
var praveen = new Student("Praveen Kumar"); 
 
var hello = new Student("Hello, World!"); 
 
var jeff = new Student("Jeff Atwood"); 
 

 
praveen.greet(); 
 
hello.greet(); 
 
jeff.greet();

しかし、どのような場合、突然私はgreet()機能のような他の機能を追加したい:

console.log("Hola! This is " + this.name); 

今「クラス」が便利です。

var Student = function (name) { 
 
    this.name = name; 
 
    this.greet = function() { 
 
    console.log("My name is " + this.name); 
 
    }; 
 
}; 
 

 
var praveen = new Student("Praveen Kumar"); 
 
var hello = new Student("Hello, World!"); 
 
var jeff = new Student("Jeff Atwood"); 
 

 
Student.prototype.sayHola = function() { 
 
    console.log("Hola! This is " + this.name); 
 
}; 
 

 
praveen.sayHola(); 
 
hello.sayHola(); 
 
jeff.sayHola();

すべてのオブジェクトのために追加し続けるよりも、1つのプロトタイプに追加することは簡単です。これにより、すべてのオブジェクトに関数が追加されます。

1

多くの場合、オブジェクトリテラルのみが必要です。ただし、同じパターンを使用して複数のオブジェクトインスタンスを作成する場合は、コンストラクタ関数を使用して自分自身を繰り返さないようにする必要があります。

function Cook(name) { 
    this.name = name; 
    this.vege = 'something'; 
} 

Cook.prototype = { 
    cookSomething: function() { ... }, 
    doDishes: function() { ... } 
}; 

を今、あなたが行うことができます:あなたは方法のように、インスタンス間で、物事を共有したい場合にも重要である

var fred = new Cook('Fred'); 
var lisa = new Cook('Lisa'); 

を...そして、彼らはすべてのcookSomethingdoDishes方法があるでしょう。

関連する問題