То, что вы говорите о том, геттер: это функция, которая работает как свойство. Это стандарт, так как javascript 1.8.5, что означает, что старый браузер не справится с этим.
Синтаксис выглядит следующим образом, используя ваш пример:
obj = {
get func() { return "hello" ; }
};
// use like this :
console.log(obj.func);
Скорее всего, вы хотите, чтобы определить сеттер также: это также функция ведет себя как свойство. Синтаксис будет:
obj = {
get func() { return this._innerText ; },
set func(txt) { this._innerText = txt ; },
_innerText : "hello"
};
console.log(obj.func) ; // output is hello
obj.func = "godd bye" ;
console.log(obj.func) ; // output is good bye
Очевидно, как часто с простого примера, этот один не имеет большого использования:
Давайте посмотрим степень в радианах преобразователя с использованием геттер/сеттер:
var Angle = {
get degree() { return this._degree ; },
set degree (dg) { this._degree = dg ; },
get radian() { return 2*Math.PI*this.degree/360 ; },
set radian (rd) { this._degree = rd * 360/(2*Math.PI) ; },
_degree : 0
} ;
// you can use :
Angle.radian = Math.PI/2;
console.log (Angle.degree); // -->> output is 90
Angle.degree=45 ;
console.log(Angle.radian) ; // --> output is 0.7853... which is PI/4
Вы также можете взглянуть на Object.defineProperty, который позволяет определять как стандартные свойства, так и геттеры/сеттеры, но с большим количеством параметров, особенно вариант «скрыть» свойство, которое позволяет ему не перечислить.
Для получения дополнительной информации:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/get https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/set https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty
'obj.func = obj.func();' – Bergi