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"
  • 相关阅读:
    03 Spring框架 bean的属性以及bean前处理和bean后处理
    02 Spring框架 简单配置和三种bean的创建方式
    01 Spring框架 基本介绍
    Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
    js 正则表达式
    HTTP中GET与POST的区别 (本质上是一样一样的TCP链接)
    微信商户平台的“企业付款到用户” 产品功能被隐藏起来了。。
    软件的安装及下载
    phpstorm 使用技巧
    Socket.io和Redis写Realtime App 之express初试
  • 原文地址:https://www.cnblogs.com/pilee/p/3447276.html
Copyright © 2011-2022 走看看