Mozilla的这篇文档 是这么描述的:
Summary
Binds an object's property to a function to be called when an attempt is made to set that property.
Syntax
obj .__defineSetter__(sprop , fun )
之前看到过mozilla这个特有的方法,但一直没有什么机会使用。最近修改handynote,被一堆要去读preference参数的get/set方法弄烦了,就想起这茬。使用下来非常方便,可以简洁结构,提高可配置性
function genSetterGetter(props){
for (var n in props) {
var propName = props[n];
var _fn_getter = function(){
var p= propName;
return function(){
return Application.prefs.getValue('extensions.note.' + p, null)
}
}();
var _fn_setter = function(){
var p= propName;
return function(val){
Application.prefs.setValue('extensions.note.' + p, val)
}
}()
NOTEHelper.__defineGetter__(propName, _fn_getter)
NOTEHelper.__defineSetter__(propName, _fn_setter)
}
}
btw:修改Fx的addons的pref.js的时候一定要记得加最后的分号