Özel ve kamu fonksiyonu arasındaki fark nedir?

2 Cevap php

Ben yeni bir programcı değilim, ve ben C başladı ve şimdi JavaScript ve PHP bir nebze daha fazla zevk için başladım. Son zamanlarda ben terimleri 'özel' ve 'kamu' fonksiyonları, bir şey duydum. Herkes hem bir açıklama vermek ve nasıl bir programcı için kullanımı olan misiniz?

Ve ben burada muhtemelen tamamen yanlış değilim ... ama bir

(function(){}) 

javascript özel bir fonksiyon?

2 Cevap

Terimleri "kamu" ve "özel" Javascript gerçekten uygun değildir. Anahtar şudur: Eğer var bilmek bazı işlevine başvurmak için bir yol var mı? Yani, ad (ya doğrudan veya başvuruda başka bir nesnenin bir özelliği olarak) kendisine başvurabilirsiniz nedir? Eğer öyleyse, tebrikler, işlevini çağırabilirsiniz. Değilse, o zaman yapamazsın.

Bu ne demektir, Java ya da C düşünün gibi bir şey olduğu gibi bir fonksiyonun "kamusallığın" statik bir şey değil olmasıdır:

var x = (function() {
  function maybePrivate() { return "my privates!"; }

  return {
    getMyPrivates: function() {
      var rv = maybePrivate;
      this.getMyPrivates = function() { return null; };
      return rv;
    }
  };
})();

Tuhaf. Yani şimdi "x" bir nesne, ve orada bir "maybePrivate" fonksiyonu var olduğunu görebilirsiniz. Ancak, bu isim - "MaybePrivate" - outside x sizi işlevine almak için adını kullanamazsınız, çünkü, size hiç bir faydası olmaz.

Ancak, bu garip nesne "getMyPrivates" denilen another işlevi vardır, ve can bunu almak. Onu aramak, size o işlevi çağırmak için kullanabileceğiniz "maybePrivate" işlevi, başvuru geri almak. Şimdi, "maybePrivate" hala özel? Peki, bunu yaparsanız:

alert(x.getMyPrivates()());

Eğer "benim mahrem!" göreceksiniz mesajı. "MaybePrivate" artık çok özel değil gibi Yani görünüyor. Ancak, bu ilk kez çağrıldıktan sonra kendini dışarı dummied olmak için "getMyPrivates" düzenler çünkü again, bu işe yaramaz olduğunu denemek eğer.

Görünümlü camdan bu küçük gezi noktası Javascript dinamik olduğunu göstermek için. Gerçekten "statik" olan tek şey (yukarıdaki örnekte "maybePrivate" gibi) bir kapak içinde işlevini mühürlü bir kez, sen outside den ortaya zorlamak değil ki nesne (en azından değil, bazı gerçekten şaşırtıcı kontorsiyon geçmeden, dil bir şey :-) "imkansız" olduğunu iddia etmek tehlikeli olduğunu çok duygusal olduğunu. Örneğin o nesne onun "özel" şeyler ortaya çıkarmak için tercih olabilir, ama o da değil seçebilirsiniz.

kamu üyeleri olarak ilan edildi sınıfın dışından erişilebilir, özel üyeler sadece özel üyelere içeri ilan edildi sınıf içinde ulaşılabilir yaygın büyük kapsülleme sağlar ve gelen uygulanmasını gizler get / set yöntemler aracılığıyla manipüle edilir çağrı fonksiyonu.

We use these keywords to specify access levels for member variables, or for member functions (methods). Public variables, are variables that are visible to all classes. Private variables, are variables that are visible only to the class to which they belong. Protected variables, are variables that are visible only to the class to which they belong, and any subclasses. Deciding when to use private, protected, or public variables is sometimes tricky. You need to think whether or not an external object (or program), actually needs direct access to the information. If you do want other objects to access internal data, but wish to control it, you would make it either private or protected, but provide functions which can manipulate the data in a controlled way