ES6 Ok işlevleri, prototype.object ile bir nesneye işlev atamak için işe yaramazsa. Aşağıdaki örnekleri inceleyin: Object.prototype sözdizimi ile ok fonksiyonlarını nesne tanımı eserlerinde açıkça ok fonksiyonu kullanılarak fakatES6 ok işlevleri prototip üzerinde çalışmıyor mu?
function Animal(name, type){
this.name = name;
this.type = type;
this.toString =() => `${this.name} is a ${this.type}`;
}
var myDog = new Animal('Max', 'Dog');
console.log(myDog.toString()); //Max is a Dog
yapmaz:
function Animal2(name, type){
this.name = name;
this.type = type;
}
Animal2.prototype.toString =() => `${this.name} is a ${this.type}`;
var myPet2 = new Animal2('Noah', 'cat');
console.log(myPet2.toString()); //is a undefined
Sadece kavramının bir kanıtı olarak
function Animal3(name, type){
this.name = name;
this.type = type;
}
Animal3.prototype.toString = function(){ return `${this.name} is a ${this.type}`;}
var myPet3 = new Animal3('Joey', 'Kangaroo');
console.log(myPet3.toString()); //Joey is a Kangaroo
mıyım şeyler eksik bariz: Object.prototype sözdizimi ile Şablon dize sözdizimi kullanarak çalışır? Örnek 2'nin mantıklı çalıştığını hissediyorum, ancak çıktı tarafından şaşırıyorum. Tahmin ediyorum, bu bir kapsam belirleme meselesi, ama çıkış tarafından atıldım 'undefined' dir.
olası kopyası [Arrow işlevi vs işlev bildirimi/ifadeleri: Onlar eşdeğer/değiştirilebilir mi?] (Http://stackoverflow.com/q/34361379/1048572) – Bergi
@Bergi Soruma 10 ay önce gönderildi ve 0 upvotes. 5 ay önce yayınlanan bir sorunun kopyası nasıl olabilir, ve şimdi buna karar vermek neden önemlidir? –
Burada atanan bir suç yok (ayrıca bu soruya cevap vermedim, ancak sadece bir yorum yazdım). Tek önemli şey, gelecekteki okuyucuların bu konudaki çok yararlı kanonik yazıya yöneltilmesi ve bu yüzden onu bağladım. – Bergi