zoukankan      html  css  js  c++  java
  • JavaScript学习——理解对象

    var person={
    name:"Nicholas",
    age:29,
    job:"Software Engineer",
    
    sayName:function(){
    alert(this.name);
    }
    };

    1.属性类型

    (1)数据属性

    [[configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。默认为true。

    [[Enumerable]]:表示能否通过for-in循环返回属性。默认为true。

    [[Writable]]:表示能否修改属性的值。默认为true。

    [[Value]]:包含这个属性的数据值。默认为undefined。

    var person={}
    Object.defineProperty(person,"name",{
    writable:false,
    configurable:false,
    value:"Nicholas"
    });
    alert(person.name);//"Nicholas"
    person.name="Greg";
    alert(person.name);//"Nicholas"
    delete person.name;
    alert(person.name);//"Nicholas"

    不过建议在IE8不使用Object.defineProperty()方法

    (2)访问器属性

    [[configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。默认为true。

    [[Enumerable]]:表示能否通过for-in循环返回属性。默认为true。

    [[Get]]:在读取属性时调用的函数。默认为undefined。

    [[Set]]:在写入属性时调用的函数。默认为undefined。

    //待完善

    2.定义多个属性

    var book={};
    Object.defineProperities(book,{
    _year:{
    value:2004
    },
    edition:{
    value:1
    },
    year:{
    get function(){
    return this._year;
    },
    set:function(newValue){
    if(newValue>2004){
    this._year=newValue;
    this.edition+=newValue-2004;
    }
    }
    }
    });

    3.读取属性的特性

    var book={};
    Object.defineProperities(book,{
    _year:{
    value:2004
    },
    edition:{
    value:1
    },
    year:{
    get function(){
    return this._year;
    },
    set:function(newValue){
    if(newValue>2004){
    this._year=newValue;
    this.edition+=newValue-2004;
    }
    }
    }
    });
    var descriptor = Object.getOwnPropertyDescriptior(book,"_year");
    alert(descriptor.value);//2004
    alert(descriptor.configurable);//fasle
    alert(typeof descriptor.get);//"undefined"
    
    var descriptor = Object.getOwnPropertyDescriptior(book,"year");
    alert(descriptor.value);//undefined
    alert(descriptor.configurable);//fasle
    alert(typeof descriptor.get);//"function"
  • 相关阅读:
    QQ音乐 删除历史登录设备
    mweb发布文章为什么默认TinyMCE编辑器?
    Mac 安装 Homebrew
    uniapp配置scss支持
    PHPRedis教程之geo
    CentOS7通过YUM安装NGINX稳定版本
    CentOS7通过YUM安装MySQL5.6
    更换composer镜像源为阿里云
    使用chattr禁止文件被删除
    centos 7 源码安装 mysql 5.6
  • 原文地址:https://www.cnblogs.com/pilee/p/3447276.html
Copyright © 2011-2022 走看看