2010-12-04 23 views

cevap

25

var _data = data;data arasında (başvuramaz) yerel bir kopyasını oluşturur (örneğin yeni Bar().data ancak new Foo().data yapabilirsiniz). this.data = data aslında nesnenin kendisinin bir özelliğini oluşturur. http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/

+2

Not: Yerel değişkene parametrenin değeri atanır. Parametre bir nesneye başvuruysa, yerel değişken de nesnenin bir kopyasına bir başvuru değil, aynı nesneye bir başvuru olacaktır. – Guffa

+1

bu harika bir cevap (punto amaçlı) – Marty

27

Evet, fark değişken nasıl saklanacağı konusunda geçerli:

Bu (hayır cinas) okumanızı öneririz.

var ile bildirilen değişken yapıcı işlev için yereldir. Yalnızca işlevler kapanışında yakalandığı için, kapsamda bildirilen herhangi bir işlev varsa, yapıcı çağrısının ötesine geçer.

this. ile bildirilen değişken aslında bir değişken değil, nesnenin bir özelliğidir ve nesne kullanılıp kullanılmadığına bakılmaksızın nesnenin yaptığı sürece hayatta kalacaktır.

Düzenleme:
Değişkenleri bunları bildirmeden kullanıyorsanız, bunlar, nesnenin bir parçası olarak değil, genel kapsamda bildirilir. Genel olarak beyan ettiğiniz şeyin kapsamını sınırlamaya çalışmalısınız, böylece her şey küresel kapsamda bitmez.

+1

Bir değişken hiçbir zaman kullanılmazsa ... var olup olmadığı fark eder mi? –

+0

Değişken, herhangi bir yöntemle kullanılmasa bile (en az bir yöntem varsa) yapıcı çağrısından kurtulacaktır. Yöntemler değişkeni kullanmak zorunda değildir - yöntem (ler) kapsamında tutulduğu için hayatta kalır. –

+0

@Pablo: Çok fazla değil, ancak değişkenleri bildirme yöntemleri arasındaki farkın bir etkisidir. – Guffa

İlgili konular