js高程(4)

高级程序设计(四
面向对象: 
1.对象的数据属性:Configureble:表示能否通过delete删除属性从而重新定义属性(delete person.name),Enumerable:表示能否通过for-in循环返回属性,Writable:表示能否修改属性值,Value:属性的数据值
var person={};
Object.defineProperty(person,"name",{writable:false,value="Ni"});
alert (person.name);//"Ni"
person.name="Gr";
alert(person.name);//"Ni";
一旦把属性定义成不可配置的,就不能再便会可配置的了
Object.defineProperty(person,"name",{writable:false,value="Ni",configurable:false});
Object.defineProperty(person,"name",{writable:false,value="Ni",configurable:true});//抛出错误
IE8只能在DOM对象上使用且限制,不要在IE8中使用Object.defineProperty()
2.访问器属性;Configurable:能否通过delete删除属性,Enumerable:能否通过for-in循环返回属性,get:读取属性时调用的函数,Set在写入属性时调用的函数
var book={_year:2014,edition:1};
Object.defineProperty(book,"year",{
    get:function(){return this._year;},
    set:function(newValue){
        if (newValue>2014){this._year=newValue;this.edition+=newValue-2004;}
    }
});
book.year=2005;
alert(book.edition);//2
严格模式下,尝试写入只指定了getter函数的属性会抛出错误;
3.定义多个属性:Object.defineProperties(); 支持的浏览器:IE9+,FF4+,Safari5+,Opera12+,Chrome

var book={};

Object.defineProperties(book,{

    _year:{value:2004},

    edition:{value:1},

    year:{

        get:function(){return this.year;},

        set:function(newValue){

        if(newValue){

            this._year=newValue;

            this.edition+=newValue-2004;}

   }}});

4.读取属性的特性:Object.getOwnPropertyDescriptor()
访问器属性:configurable,enumerable,get,set
数据属性:configurable,enumerable,writable,value

var book={};

Object.defineProperties(book,{

    _year:{value:2004},

    edition:{value:1},

    year:{

        get:function(){return this.year;},

        set:function(newValue){

        if(newValue){

            this._year=newValue;

            this.edition+=newValue-2004;}

   }}});

var descriptor=Object.getOwnPropertyDescriptor(book,"_year");

alert(descriptor.value);//2004

alert(descriptor.configurable);//false

alert(typeof descriptor.get);//"undefined"

var descriptor=Object.getOwnPropertyDescriptor(book,"year");

alert(descriptor.value);//undefined

alert(descriptor.enumerable);//false

alert(typeof descriptor.get);//"function"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值