Ben ES6 böyle ok işlevleri ve sınıfları olarak ES5 içinde this
anahtar kelime ile var olan sorunların çoğunu çözmüş biliyoruz.Neden ES6 sınıfında "bu" örtük değil?
Sorum bir ES6 sınıf bağlamında this
kullanımı ile ilgilidir ve açıkça yazılacak o neden. Aslında bir Java geliştiricisiydim ve aşağıdaki kod satırlarının tamamen doğal olduğu bir dünyadan geliyorum. Bu yöntem kapsamında tanımlandığı adı myName
yerel bir değişken olmadığı sürece
class Person {
private String myName;
public Person() {
myName = "Heisenberg";
}
public void sayMyName() {
System.out.println("My name is " + myName);
}
}
derleyici zaman, alan myName
değerine başvuracaktır.
class Person {
constructor() {
this.myName = "Heisenberg";
}
sayMyName() {
console.log(`My name is ${myName}`);
}
}
Bu işe yaramaz ve bir Uncaught ReferenceError: myName is not defined
atar. Bunu düzeltmek için tek yol açık this
referans atmak etmektir: ES6 sınıfları senin alanları yapıcı dışında tanımlanmasına izin vermez çünkü
console.log(`My name is ${this.myName}`)
Kurucuda this
ihtiyacını anlıyorum ama sayMyName
Yani temelde soruyorsun? "Javascript" içindeki "java" nın programlama dili Java ile ilgisi olmadığını unutmayın. – luk2302
@ luk2302 - Dillerin temelde hiçbir ilişkisi olmadığını söylediyseniz, bu doğrudur. Ama "javascript" deki "java" nın Java programlama dili ile ilgisi olmadığını söylediğinizde, hızlı bir google aramasıyla doğrulayabileceğinizden yanlıştır. wikipedia From: "... ** ** Güneş'ten bir marka lisansı aldıktan sonra, ad JavaScript kabul edilmiştir ** Bu Java etrafında ardından ** çok popüler olmak, biraz zaman bir pazarlama hareket oldu" –
Değil sadece farklı dilleri değil aynı zamanda farklı kavramları karşılaştırıyorsunuz. _ "Kurucuda buna olan ihtiyacı anlıyorum" _ Kurucu işlevi neden farklı şekilde ele alınmalıdır? – zeroflagL