SORU
12 Ocak 2009, PAZARTESİ


javascript - prototip tanımlı özel üye değişkenleri başlatabilirsiniz.

Orada "değişkenleri (kurucu tarafından tanımlanan), prototip tanımlı mevcut yöntemler?" özel yapmak için herhangi bir yolu var mı

TestClass = function(){
    var privateField = "hello";
    this.nonProtoHello = function(){alert(privateField)};
};
TestClass.prototype.prototypeHello = function(){alert(privateField)};

Bu gibi çalışır:

t.nonProtoHello()

ama bu değil:

t.prototypeHello()

Kurucu içinde benim yöntemleri tanımlamak için kullanılan değilim, ama o uzakta bir kaç nedenlerden dolayı taşınıyorum.


Teşekkürler sktrdie,

this.accessPrivateField oluşturmak zorunda değil güzel olurdu. "Merhaba" kurucu işlevi içinde tanımlanan, privateField fonksiyon kapsam zincirinde, ben gibi privateField tedavi edebilmem için java. özel bir alan benim ise Biraz daha hantal erişenleri (this.accessPrivateField) kurmak için, ve sonra, privateField çok özel değil.

Javascript java değil biliyorum, ama ben java gibi!

CEVAP
12 Ocak 2009, PAZARTESİ


Hayır, bunu yapmak için bir yol yok. Bu aslında ters kapsayan olurdu.

Yöntemler kurucu içinde tanımlanan tüm fonksiyonları tanımlanmış olduklarını kapsamında erişim, çünkü özel değişkenleri erişebilirsiniz.

Yöntemleri bir prototip üzerinde tanımlanan kurucu kapsamında tanımlanmış ve kurucu yerel değişkenlere erişemez.

Size özel değişkenler, ama isterseniz yöntemleri tanımlanan prototip için onlara erişim gerekir tanımlamak alıcıları ve ayarlayıcıları this nesne, prototip yöntemleri (kalan her şeyle birlikte)erişim var. Örneğin:

function Person(name, secret) {
    // public
    this.name = name;

    // private
    var secret = secret;

    // public methods have access to private members
    this.setSecret = function(s) {
        secret = s;
    }

    this.getSecret = function() {
        return secret;
    }
}

// Must use getters/setters 
Person.prototype.spillSecret = function() { alert(this.getSecret()); };

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008
  • PUSHER

    PUSHER

    11 HAZİRAN 2014
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011