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

解决方案 »

  1.   

     set page(val){…}  不能这么,  区别 一个对,一个错
      

  2.   

    我知道按标准来说 后面一种是错的但是在chrome中能正常执行。所以我才问的啊
      

  3.   

    这个是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内部的代码根本无法监听到。