On Mon, Nov 7, 2011 at 9:01 AM, Jarek Foksa <ja...@kiwi-themes.com> wrote:
> While reading WebKit Inspector's sources I have stumbled upon syntax
> that I have not seen before, namely get & set keywords:
>
> var editor = {
>  _startLine: 91,
>
>  get startLine() {
>    console.log('Getting start line');
>    return this._startLine;
>  },
>
>  set startLine(value) {
>    console.log('Setting start line');
>    this._startLine = value;
>  },
> }


This way of writing getters and setters in object literals was
introduced in ES5.

> I fail to see what's the point of this syntax. Considering the fact
> that it's still possible to change the value of editor._startLine
> without the setter, how is that better than using regular functions
> like below?

If your object is being used by other code that expects to be able to
read startLine directly, using getters and setters allows you to have
side effects attached to reading it, without changing the existing
code to use getter and setter functions.

Dumb getter and setter functions (those that really just get and set a
(private) variable) are really a modeling hack in anticipation of
maybe, possibly, once in the future to have to do something more.
99.9% of getters/setters in Java could be made simple properties
without any problem. In languages with proper get/set attributes
(e.g., C# and now ECMAScript), you can make properties just
properties, and use get/set if you ever need something more.

/L

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/jsmentors@jsmentors.com/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/jsmentors@googlegroups.com/

To unsubscribe from this group, send email to
jsmentors+unsubscr...@googlegroups.com

Reply via email to