2009-08-24 10 views
6

SO üzerinde bir çok OO javascript sorusu olduğunu biliyorum ve çok fazla kaynak okudum .... AMA şu ana kadar hala en uzun sarımlı öğrenme eğimim!Nesne Yönelimli Javascript - Bir Sınıf İçinde Bir Sınıf Nasıl Tanımlanır? Bir C# örneğinden

Klasik olarak eğitilmediğim için üzgünüm, bu yüzden size sadece C# içinde göstermek istediklerimin bir örneğini göstermem gerekecek.

Umarım yardımcı olabilirsiniz! Yukarıdaki C# örnek açık/gizli & adlandırma kuralları hakkında endişeli değilim

public class Engine 
{ 
    public int EngineSize; 

    public Engine() 
    { 
    } 
} 
public class Car 
{ 
    public Engine engine; 

    public Car() 
    { 
     engine = new Engine(); 
    } 
} 

çocuklar.

Tek bilmek istediğim, bu yapının Javascript'te nasıl kopyalanacağıdır?

Teşekkürler!

+0

Bu C# olması gerekiyor mu? Kamu sınıfından sonra parenler nelerdir? –

cevap

15
function Engine(size) { 
    var privateVar; 

    function privateMethod() { 
     //... 
    } 

    this.publicMethod = function() { 
     // with access to private variables and methods 
    }; 

    this.engineSize = size; // public 'field' 
} 

function Car() { // generic car 
    this.engine = new Engine(); 
} 

function BMW1800() { 
    this.engine = new Engine(1800); 
} 

BMW1800.prototype = new Car(); // inherit from Car 


var myCar = new BMW1800(); 
+1

Bunu diğer örneklerden daha iyi seviyorum çünkü javascript'in dışarıdan erişilemeyen özel bir ad alanı sağlama becerisini kullanıyor. Aynı şeyi arabada da gösterebilirdim, ama en azından kendi özel videonuz bilgi gizlemeyi gösteriyor. – PanCrit

3

Yani gerçekten sadece bir nesnenin bir diğerini nasıl içerdiğini bilmek ister misiniz? İşte örnek çok basit bir dönüşüm olur:

function Engine() 
{ 
    this.EngineSize=1600; 
} 

function Car() 
{ 
    this.engine=new Engine(); 
} 

var myCar=new Car(); 
0
function Engine(){ // this is constructor. Empty since Engine do nothing. 
} 
Engine.prototype.EngineSize=null; // this is public property 

function Car(){ // this is Car constructor. It initializes Engine instance and stores it in Engine public property 
    this.Engine =new Engine(); 
} 

Car.prototype.Engine =null; 

yeni Araba örneğini yapacaktır zaman. Araç kurucusu, yeni bir Motor örneği oluşturacak ve onu Araba örneğinin Engine özelliğine atayacaktır.

İlgili konular