Soru Sınıfta bir işlevden önce “get” anahtar kelimesi nedir?


Nedir get bu ES6 sınıfında demek? Bu işleve nasıl başvurabilirim? Nasıl kullanmalıyım?

class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }

  get area() {
    return this.calcArea()
  }

  calcArea() {
    return this.height * this.width;
  }
}

32
2017-08-13 22:09


Menşei


Büyük ihtimalle sadece bir gaz giderici ama bir nesne yerine bir sınıfın içinde. Gerçekten ES6'ya özgü değil. - Xufox
@Xufox, ES6'ya özgü olmayanı nasıl kastediyorsunuz? - Keith Nicholas
@KeithNicholas: ES5'te aynı şekilde çalıştı. - Bergi
@KeithNicholas Getters ES5'ten beri var, bence. Burada ES6 olan tek şey class sözdizimi, ancak alıcılar yeni bir şey değil. - Xufox


Cevaplar:


Bu fonksiyonun bir özellik için bir alıcı olduğu anlamına gelir.

Kullanmak için, adını başka bir mülkünüz gibi kullanmanız yeterlidir:

'use strict'
class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }

  get area() {
    return this.calcArea()
  }

  calcArea() {
    return this.height * this.width;
  }
}

var p = new Polygon(10, 20);

alert(p.area);


45
2017-08-13 22:11



Bunu hep merak etmişimdir. Teşekkürler. - Matthew Harwood
Sınıflar katı mod btw'de gizlidir. ecma-international.org/ecma-262/6.0/#sec-strict-mode-code - Kit Sunde
@KitSunde - en azından tarayıcımda (Chrome, Win7), bu ifade olmadan çalışma örneği yerine konsol hataları alıyorum. Ve bu "Cevap" parçasının bir parçası değil, "Kod snippet'ini çalıştır" düğmesi gibi değil. - Amit
Sadece arayabilir misin p. calcArea? değilse, neden olmasın? - ksav
Get / set anahtar kelimeler sadece syntactical şekeridir - Polygon.calcArea () 'a yapılan bir çağrı da bir getter gibi davranır mı? - Craig O. Curtis


OO Javascript'teki Objects ve Classes ile aynıdır. İçin MDN Dokümanlarından get:

get sözdizimi, bir özellik özelliğini, özellik bakıldığında çağrılacak bir işleve bağlar.


11
2017-08-13 22:12