2016-07-30 10 views
0

Ich habe über OOP in JS gelesen, aber zwischen traditionellen OOP und Objektliteral verwechselt. Und ich fand auch in Github viele großartige JS-Projekte, die nicht auf dem OOP-Weg geschrieben wurden. Sie nutzen das Objektmuster wie das Enthüllen von Mustern und Singletons. Ich kam aus Java, jetzt bin ich zwischen unten Muster, auf, wann man sie benutzt.Wann dieses und nicht Objektliteral in Javascript verwenden?

OOP:

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

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

Versus Objektliteral Art und Weise:

var cook = { 

vege:"something" 

} 
cook.vege = "something else" 

Antwort

0

Lassen Sie uns sagen, gibt es 100 Objekte für einen bestimmten Schüler erstellt:

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();

Aber was, wenn, möchte ich plötzlich eine andere Funktion wie greet() Funktion hinzuzufügen:

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

Der jetzt die „Klasse“ ist praktisch.

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();

Es ist leicht, in einem einzigen Prototyp hinzuzufügen, als für alle Objekte hinzugefügt halten. Dies fügt die Funktion allen Objekten hinzu.

1

Häufig benötigen Sie nur ein Objektliteral. Wenn Sie jedoch mehrere Objektinstanzen mit denselben Mustern erstellen möchten, sollten Sie eine Konstruktorfunktion verwenden, um sich nicht zu wiederholen. Dies ist auch wichtig, wenn Sie Dinge teilen möchten, wie Methoden, über Instanzen:

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

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

Jetzt können Sie tun:

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

... und sie werden alle haben eine cookSomething und doDishes Verfahren .

Verwandte Themen