日期:2014-05-16  浏览次数:20333 次

set page(…){…}这种写发法 是什么意思是怎么调用
问下?
set:function settingsSet(name){…}????
set page(val){…}?这两种写法有什么区别 
后面一种编辑器回会报错有但是执行的是时候没问题?
那这种写法的意思是什么,如果多次出现这种写法在一个对象中国我怎么分别调用??
还有对应get的方法论也是这种格式  chorme浏览器载谢谢了
set get 对象

------解决方案--------------------
这个是ECMAscript5(js的最新广泛实现版本,6还在定制中,6中有模块加载有类有继承,偷笑吧~)中defineProperty的简写版本,setter和getter的写法

var obj = (function(){
  var innerVar = "不可变";
  return {
    func: function(){return innerVar;},
    name: 'aaa',
    get str(){return innerVar;},
    get num(){return Math.floor(Math.random()*100);}
  };
})();
alert(obj.str); //不可变
obj.str = "5fasd";alert(obj.str); //还是“不可变”,因为没实现str属性的setter
alert(obj.num); //一个随机数
alert(obj.num); //又一个随机数,因为执行了num的getter,getter返回了一个random数

getter和setter器定义的属性直接用对象名+“点号”+属性名来访问,如上的num和str属性。取值将调用getter器,赋值将调用setter器。
如上的func和name是定义的普通属性,func属性用obj.func()加括号调用因为是函数,name属性按普通属性使用即可。
有了这两个东西,就可以监听对象的属性取赋值的操作,而如上定义的name属性的值变,obj内部的代码根本无法监听到。