Nasıl javascript bir sınıfından?
PHP/Java:
class Sub extends Base
{
}
Ve otomatik olarak Süper sınıf/korumalı yöntemleri, özellikleri, alanlar, vb tüm kamu geçersiz gerekirse hangi Alt sınıfın bir parçası haline gelir.
Javascript bunun için eşdeğer nedir?
CEVAP
JavaScript yoksınıflarama kalıtım ve davranış pek çok açıdan yeniden alabilirsiniz:
Pseudo-klasik miras (prototipleme):
function Super () {
this.member1 = 'superMember1';
}
Super.prototype.member2 = 'superMember2';
function Sub() {
this.member3 = 'subMember3';
//...
}
Sub.prototype = new Super();
new
operatör kullanılmalıdır:
var subInstance = new Sub();
Fonksiyon uygulama veya "yapıcı zincirleme":
function Super () {
this.member1 = 'superMember1';
this.member2 = 'superMember2';
}
function Sub() {
Super.apply(this, arguments);
this.member3 = 'subMember3';
}
Bu yaklaşım aynı zamanda new
operatör kullanılmalıdır:
var subInstance = new Sub();
Farkı ile ilk örnektir o zaman biz apply
Super
kurucu this
nesne içinde Sub
ekler özelliklerini tayin için this
Super
doğrudan yeni örneği, örn: subInstance
içerdiği özellikler member1
member2
doğrudan (subInstance.hasOwnProperty('member1') == true;
).
İlk örnekte, bu özellikleri ile ulaşabilirsinizprototip zinciri, [[Prototype]]
dahili bir nesne değildir.
Parazit miras ya da Güç Kurucular:
function createSuper() {
var obj = {
member1: 'superMember1',
member2: 'superMember2'
};
return obj;
}
function createSub() {
var obj = createSuper();
obj.member3 = 'subMember3';
return obj;
}
Bu yaklaşım temelde "" new
operatör kullanmanıza gerek yok, ve gördüğünüz gibi, this
anahtar kelime dahil değildir. artırmada nesne dayanmaktadır
var subInstance = createSub();
5th Ed ECMA. Object.create
yöntem:
// Check if native implementation available
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {} // empty constructor
F.prototype = o; // set base object as prototype
return new F(); // return empty object with right [[Prototype]]
};
}
var superInstance = {
member1: 'superMember1',
member2: 'superMember2'
};
var subInstance = Object.create(superInstance);
subInstance.member3 = 'subMember3';
Yukarıdaki yöntem ilk miras tekniği Crockford tarafından önerilen.
Nesne örnekleri olduğu diğer nesne örnekleri, devralır.
Bu tekniği daha iyi, daha basit "büyütme kalıtsal özellikleri beri her yeni nesne örnekleri üzerinden kopyalanan değil çünkü". bir nesne olabilir ^em>tabannesne [[Prototype]]
olarak ayarlanıruzatılmışnesne, yukarıdaki örnekte subInstance
member3
özelliği içerir fiziksel olarak.
JavaScript kilitler nasıl çalışır?...
Nasıl bir JavaScript nesnesinin bir öz...
Nasıl JavaScript bir zaman damgası alm...
Nasıl JavaScript panoya kopyalamak mı?...
Nasıl JavaScript yok .prototip çalışma...