javascript 理解对象--- 定义多个属性和读取属性的特性

一 定义多个属性

  ECMAScript5 定义了一个Object.defineProperties()方法,用于定义多个属性。此方法接受两个对象参数:

    第一个对象:要添加或修改其属性的对象

    第二个对象的属性与第一个对象的要添加或修改的属性一一对应 :

例如:
var
book ={}; Object.defineProperties(book,{ _year:{ writable:true, value :2004 }, edition:{ writable:true, value :1 }, year : { get :function(){ return this._year; }, set :function(value){ if(value > 2004){ this._year = value; this.edition += value -2004 } } } });

支持Object.defineProperties()方法的浏览器有IE9+ Firefox+ Safari5+,Opera12+ 和 Chrome;

 

二 读取属性的特性

   ECMAScript5方法:Object.getOwnPropertyDescriptor()方法,可以取得给定属性的描述符,接受两个参数(属性所在对象 、 要读取其描述符的属性名称)

var book ={};
Object.defineProperties(book,{
    _year:{
             value :2004 
    },
    edition:{
             value :1 
    },
    year : {
             get :function(){
                 return this._year;
             },
           set :function(value){
                  if(value > 2004){
                        this._year = value;
                        this.edition += value -2004 
                  }
           }
    }
});
//数据属性
var descirptor = Object.getOwnPropertyDescirptor(book,"_year"); alert(descirptor.value);//2004 alert(descriptor.configurable);//false alert(typeof descriptor.get); // "undefined"
//访问属性 var descirptor = Object.getOwnPropertyDescirptor(book,"year"); alert(descirptor.value);//2004 alert(descriptor.configurable);//false alert(typeof descriptor.get); // "function"

支持Object.getOwnPropertyDescriptor()方法的浏览器有IE9+ Firefox+ Safari5+,Opera12+ 和 Chrome;

 

posted @ 2016-09-18 15:50  山水如九画  阅读(424)  评论(0编辑  收藏  举报