6.1.3 读取属性的特性

  使用ECMAScript5的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>2004){
                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"

  对于数据属性_year,value等于最初的值,configurable是false,而get等于undefined。对于访问器属性year,value等于undefined,enumerable是false,而get是一个指向getter函数的指针。

  在JavaScript中,可以针对任何对象,包括DOM和BOM对象,使用Object.getOwnPropertyDescriptor()方法。支持这个方法的浏览器有IE9+、FF4+、Safari5+、Opera12+和Chrome。

时间: 2024-10-16 14:53:14

6.1.3 读取属性的特性的相关文章

javascript中对象的属性的特性

enumberable: 表示是否能通过for-in循环返回属性.默认为true writable: 是否可以修改属性, 默认为true value: 包含这个属性的数据值.读取属性值时3,从这个属性读,写入属性时,把新值保存到这个位置.默认值为undefine. getter: 在读取属性时,调用的函数 setter: 在写入属性时调用的函数 特别注意:一旦调用了Object.defineProperty方法之后,那些未定义的特性值除了configurable为false之外,其他都为unde

深入理解JavaScript中的属性和特性

深入理解JavaScript中的属性和特性? JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象属性如何进行分类 属性中特性的理解 第一部分:理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象的本质:ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数.即

iOS常量、变量、属性及其特性

1.Objective-C中声明常量使用关键字const.如:const double PI = 3.1514; 2.Objective-C中变量可以分为成员变量.局部变量和全局变量(用的很少,尽量不要用). //————————------------常量—————————————————// 方法一: #define kDetailKey            @“detail text” #define DOWNLOAD_TIMEOUT      60.0 #define degresss

属性的特性

属性大体可以分为两类: 1. 数据属性; 2. 存取器属性; 一个属性包含了1个名字和四个特性: 数据属性: 值: value 可写性: weitable 可枚举性: enumerable 可配置性: configurable 存取器属性 读取: get 写入: set 可枚举性: enumerable 可配置性: configurable 通过属性描述符方法( property descriptor ),可以对属性的特性进行查询和操作; 通过调用 ObjectgetOwnPropertyEes

dom属性和特性

最近做一个html转pdf的项目,中间需要用户互动html,并将互动后的html结果转换为pdf,但一开始就遇到个问题, 就是不管是jquery的val()还是dom的.value始终没法给页面的文档赋值(就是控制台的html代码)只是表面上变了. 原来浏览器中的dom中分为 属性 和 特性,属性指的是 当前浏览器中的 dom对象的属性,特性指的是 纯html文档, 我要取html,当然是要改变html文档的文本,而不只是让用户看到的 属性,一般不用到html时真是分不清这俩区别. 而且,页面在

javaScript 工作必知(八) 属性的特性 值、写、枚举、可配置

属性的特性 每个对象都拥有属性,属性具有哪些特性呢? 1.属性具有值.  2.属性是否是可写的.            3.是否是可枚举的.            4.是否是可配置的.   "use strict";//使用严格模式 var descriptor = Object.getOwnPropertyDescriptor({ x: 1 }, "x");//获取匿名对象的值 alert("value:" + descriptor.value

JavaScript之读取属性特征

使用Object.getOwnPropertyDescriptor方法读取属性特征 'use strict'; var person = { }; Object.defineProperties(person, { _age: { configurable: true, writable: true, enumerable: true, value: -1, }, age: { configurable: false, enumerable: false, get: function () {

依据不同的操作系统读取配置文件/java读取属性文件代码

package cn.com.css.common.util; /** * @brief OSEnum.java 操作系统的枚举 * @attention * @author 涂作权 * @date 2014年4月3日 * @note begin modify by null */ public enum EOSPlatForm { Any("any"), Linux("Linux"), Mac_OS("Mac OS"), Mac_OS_X(&q

03-对JQuery对象的属性,特性以及数据的操作

对JQuery对象的属性,特性以及数据的操作: 特性(attributes)和属性(properties): 特性的值是字符串. 属性的值不光为字符串,而且可以为布尔值,对象,数字. 元素的属性和特性有动态链接,如果特性在dom对象中存在,其中一个发生变化,另一个也会变化 如果特性是本来就在dom对象中存在,但是类型为boolean,那么特性和属性将不会同步. 如果attributes不是dom对象内建的属性,attributes和properties的值不会同步. 操作元素的特性: 获取特性的