SORU
25 NİSAN 2010, Pazar


Kullanarak "Nesne.oluştur" yerine "yeni"

1.9.3 / ECMA 5 Javascript tanıttı Douglas Diğerleri uzun bir süre advocating olmuştur arasında Crockford Object.create,. Nasıl aşağıdaki kod Object.create new yerini?

var UserA = function(nameParam) {
    this.id = MY_GLOBAL.nextId();
    this.name = nameParam;
}
UserA.prototype.sayHello = function() {
    console.log('Hello '  this.name);
}
var bob = new UserA('bob');
bob.sayHello();

(MY_GLOBAL varsayalım.var nextİd).

Aklıma gelen en iyisidir:

var userB = {
    init: function(nameParam) {
        this.id = MY_GLOBAL.nextId();
        this.name = nameParam;
    },
    sayHello: function() {
        console.log('Hello '  this.name);
    }
};
var bob = Object.create(userB);
bob.init('Bob');
bob.sayHello();

Herhangi bir avantajı yok, ben anlamıyorum sanırım. Muhtemelen çok neo-klasik olmaya çalışıyorum. Nasıl Object.create kullanıcı oluşturmak için kullanmalı mıyım? diye bob

CEVAP
25 NİSAN 2010, Pazar


Miras sadece bir seviye ile, sizin örnek Object.create gerçek faydalarını görürsünüz.

Bu yöntem kolayca uygulamak için izin verirdiferansiyel mirasnesneleri diğer nesnelerden devralabilir.

Üzerinde userB örnek sanmıyorum o init yöntem olmalı kamu veya bile var, seni çağırır, tekrar bu yöntemi varolan bir nesne örneği, id name özellikleri değişecek.

Object.create ikinci argüman, örneğin kullanarak nesne özellikleri başlatmak sağlar:

var userB = {
  sayHello: function() {
    console.log('Hello '  this.name);
  }
};

var bob = Object.create(userB, {
  'id' : {
    value: MY_GLOBAL.nextId(),
    enumerable:true // writable:false, configurable(deletable):false by default
  },
  'name': {
    value: 'Bob',
    enumerable: true
  }
});

Gördüğünüz gibi, bu özellikler olabilir başlatıldı ikinci bağımsız değişken Object.create, değişmez bir nesne kullanarak benzer bir sözdizimi için kullanılan Object.defineProperties Object.defineProperty yöntemleri.

Gerçekten yararlı olabilecek bir özellik öznitelikleri (enumerable, writable configurable) ayarlamanızı sağlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • gsipek

    gsipek

    20 Temmuz 2007
  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • Major FX

    Major FX

    6 HAZİRAN 2012