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
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.
Kullanarak "yeni" bir yapı ü...
((yeni nesne) kilit -- Kargo kültü ya ...
kullanarak wmode=&; şeffaf" " aras...
Python sabitleri kullanarak oluştur &q...
Nasıl "nesne yapar.yeni" iş?...