Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does Javascript have get/set keywords like C#?

I'm working with XULRunner and came across the following pattern in a code sample:

var StrangeSample = {

backingStore : "",

get foo() { return this.backingStore + " "; },

set foo(val) { this.backingStore = val; },

func: function(someParam) { return this.foo + someParam; }
};

StrangeSample.foo = "rabbit";
alert(StrangeSample.func("bear"));

This results in "rabbit bear" being alerted.

I've never seen this get/set pattern used in Javascript before. It works, but I can't find any documentation/reference for it. Is this something peculiar to XUL, a recent language feature, or just something I missed? I'm puzzled because I was specifically looking for something like this a few months ago and couldn't find anything.

For reference, removing "get" or "set" results in a syntax error. Renaming them to anything else is a syntax error. They really do seem to be keywords.

Can anyone shed some light on this for me, or point me towards a reference?

like image 761
chinchilla Avatar asked Mar 23 '11 17:03

chinchilla


People also ask

Is get a keyword in JavaScript?

Summary: The get keyword will bind an object property to a function. When this property is looked up now the getter function is called. The return value of the getter function then determines which property is returned.

What is get set in JavaScript?

In JavaScript, accessor properties are methods that get or set the value of an object. For that, we use these two keywords: get - to define a getter method to get the property value. set - to define a setter method to set the property value.

Should you use getters and setters in JavaScript?

Conclusion. You don't necessarily have to use getters and setters when creating a JavaScript object, but they can be helpful in many cases. The most common use cases are (1) securing access to data properties and (2) adding extra logic to properties before getting or setting their values.

How do you use get in JavaScript?

get() method in JavaScript is used for returning a specific element among all the elements which are present in a map. The Map. get() method takes the key of the element to be returned as an argument and returns the element which is associated with the specified key passed as an argument.


Video Answer


1 Answers

As suggested by Martinho, here are some links explaining the getter/setters in JS 1.5:

http://ejohn.org/blog/javascript-getters-and-setters/

http://ajaxian.com/archives/getters-and-setters-in-javascript

Be aware though, they don't seem to be supported in IE, and some developers have (legitimate) concerns about the idea of variable assignment having side-effects.

get/set are not reserved keywords as Daniel points out. I had no problem creating a top-level functions called "get" and "set" and using the alongside the code-sample posted above. So I assume that the parser is smart enough to allow this. In fact, even the following seems to be legitimate (if confusing):

var Sample = {
   bs : "",
   get get() { return this.bs; },
   set get(val) { this.bs = val; }
 }
like image 104
chinchilla Avatar answered Oct 05 '22 07:10

chinchilla