Я много искал, как делать свойства в Javascript. Большинство всего раскрывающего шаблона модуля, который я видел, имеют исключительно открытые функции, и из опыта, который я знаю, если я выставляю объект, я действительно получаю копию значения прямо там и тогда, поэтому просто у меня могла бы быть функция getMyThing() и setMyThing и выставить это. Тем не менее, я хотел выставить реальные свойстваУточнение, необходимое для реализации свойств с помощью шаблона раскрывающего модуля с использованием геттеров и сеттеров Html5.
Я видел OLDSCHOOL defineGetter который я избегаю и новой Object.defineProperty (который я имел некоторые реальные проблемы с. (Я мог бы легко использовать его против artitary объект, но это не в моем «модуль», ни свойство в моем модуле я хотел раскрыть.
var myobj = (function() {
var name = "default name"
var sayName = function() { return "hello " + name }
return {
badname : name, //this won't change
sayName : sayName,
get name() { return name;},
set name(value) { name = value ;}
}
})()
alert("should be default because its just a copy: " + myobj.badname)
alert("should be default: " + myobj.name)
myobj.name = "karl"
alert("should be default because its just a copy: " + myobj.badname)
alert("should be karl: " + myobj.name)
во всяком случае я вижу в некоторых местах вы можете использовать получить и установить ключевые слова и у меня есть следующий пример, который работая для меня хотя бы в firefox и ie10.
Мой вопрос: есть ли приемлемый подход или есть скрытые ошибки, о которых я не знаю. Является ли этот подход наиболее приемлемым в современных браузерах? Что называется эта функция? и каково официальное имя функции Object.defineProperty? Я предполагаю, что использование ключевого слова get и set является получателем и установщиком ECMAScript5, но что называется другим?
и является ли ключом к установке и заданию того, что упоминается в этой таблице совместимости http://kangax.github.io/es5-compat-table/ в категории «Getter in property initializer» и «Setter in property initializer»?
пример на JSfiddle - http://jsfiddle.net/klumsy/NagbE/1/
Этот вопрос, как он стоит немного непонятно - вы можете затянуть его (вопросы говоря «Это хорошо?» обычно закрываются) – slifty
Возможный дубликат [Имеет ли Javascript ключи/такие ключевые слова как C#?] (http://stackoverflow.com/questions/5409372/does-javascript-have-get-set-keywords -like-c) –