Hay muchos idiomas donde las propiedades pueden respaldarse mediante llamadas a métodos, incluido JavaScript. Depende de los implementadores decidir cómo se implementará.
Puede tener sus propias propiedades respaldadas por funciones. Ya he hecho answered una pregunta similar antes, por lo que no la repetiré aquí.
Ruby tampoco requieren paréntesis después de una llamada a un método. Este es el código Ruby válido
[].size // size is an Array method
object.x = 42; // x= is a method (setter)
Python también tiene el concepto de propiedades respaldadas por funciones. He aquí un ejemplo en Python:
class Foo(object):
def __init__(self):
self._x = None
@property
def x(self):
print "getter called"
return self._x
@x.setter
def x(self, value):
print "setter called"
self._x = value
f = Foo()
f.x = "20"
setter called
f.x
getter called
paréntesis es sólo la sintaxis y se ha utilizado tradicionalmente para las llamadas de función/método, pero no es una norma universal por cualquier medio.
Pruebe '[1,2,3,4] .length = 2'. Ver http://jsfiddle.net/jfriend00/9bddC/. – jfriend00
La longitud de la matriz de Java también es una propiedad (pseudo-). Además, en muchos idiomas, incluido Ruby (RoR no es un idioma), los paréntesis suelen ser opcionales. –
En realidad en Ruby [on Rails], no existe un concepto separado de propiedades, y siempre se puede omitir el paréntesis (excepto cuando sea necesario para la precedencia) – Gareth