一 定义多个属性

  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);//
alert(descriptor.configurable);//false
alert(typeof descriptor.get); // "undefined"

//访问属性
var descirptor = Object.getOwnPropertyDescirptor(book,"year");
alert(descirptor.value);//
alert(descriptor.configurable);//false
alert(typeof descriptor.get); // "function"

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

javascript 理解对象--- 定义多个属性和读取属性的特性的更多相关文章

  1. JavaScript: 理解对象

    ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每个属性或者方法都有一个名字,而每个名字都映射到一个值 ...

  2. javascript 理解对象--- 属性类型

    ECMA-262 把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数: var Person = { name:"wsc", age :"25", ...

  3. javascript中对象的每个实例都具有的属性和方法

  4. js面向对象的程序设计 --- 上篇(理解对象)

    前言 ECMAScript中没有类的概念,因此它们的对象与基于类的语言中的对象有所不同. ECMA-262把对象定义为:"无序的集合属性,其属性可以包含基本值,对象或者函数".正因 ...

  5. JS面向对象设计-理解对象

    不同于其他面向对象语言(OO,Object-Oriented),JS的ECMAScript没有类的概念, 它把对象定义为"无序属性(基本值.对象.函数)的集合",类似于散列表. 每 ...

  6. 深入理解javascript对象系列第三篇——神秘的属性描述符

    × 目录 [1]类型 [2]方法 [3]详述[4]状态 前面的话 对于操作系统中的文件,我们可以驾轻就熟将其设置为只读.隐藏.系统文件或普通文件.于对象来说,属性描述符提供类似的功能,用来描述对象的值 ...

  7. JavaScript 面向对象的程序设计(一)之理解对象属性

    首先,JavaScript 面向对象的程序设计,主要分三部分. 理解对象属性: 理解并创建对象: 理解继承. 本文主要从第一方面来阐述: 理解对象属性 首先我们来理解Javascript对象是什么?在 ...

  8. 03.JavaScript 面向对象精要--理解对象

    JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...

  9. Javascript中对象的Obeject.defineProperty()方法-------------(ES5/个人理解)

    在讲到Obeject.defineProperty()方法之前先得说明一下ECMAScript中有两种属性:数据属性和访问器属性. 两种属性存在的意义:描述对象属性(key)的一些特性,因为这些属性是 ...

随机推荐

  1. VC++:ActiveX Test Container

    VC++6.0安装后包含了ActiveX Test Container工具,位置为: "C:\Program Files (x86)\Microsoft Visual Studio\Comm ...

  2. 学习《深入理解C#》—— 委托的构成、合并与删除和总结 (第二章1.1---1.4)

    目录 简单委托的构成 合并和删除委托 委托总结 简单委托的构成 委托四部曲: 声明委托类型. 必须有一个方法包含了要执行的方法. 必须创建一个委托实例. 必须调用委托(invoke)实例 ① 声明委托 ...

  3. Scilab 的画图函数(3)

    我们在做数据画图或函数图像时常常须要使用对数坐标系.尤其是数据的范围跨越非常多个数量级时.通常的线性坐标系下无法表现出数据特征. Scilab 中Plot函数无法画出对数坐标.须要使用 plot2d  ...

  4. 自动交互式脚本--expect

    我们经常会遇到一些需要与服务器程序打交道的场景,比如,从登陆某个服务器,然后进行某项工作.这很平常,但是如果把这个工作自动化进行,你就需要一个程序能自动做你要告诉机器的事情,这样,我们的expect就 ...

  5. 160307、Java调用Oracle存储过程返回结果集

    一:无返回值的存储过程调用 存储过程: CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)   AS BEGI ...

  6. 领悟 JavaScript 中的面向对象

    JavaScript是基于对象的语言,我们可以使用面向对象的思想去开发js代码. JavaScript是基于对象的语言. 可以使用面向对象的思想,但是不少人对这一点理解得并不全面. 在 JavaScr ...

  7. HDU2842—Chinese Rings

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目意思:一把一个n连环的前n个拿下来,一个个n连环,要把第k个拿下来,需要把前n-2个拿下来, ...

  8. Redis的基本使用(基于maven和spring)

    使用redis基本测试 maven导包 <dependency> <groupId>redis.clients</groupId> <artifactId&g ...

  9. python的@classmethod和@staticmethod

    本文是对StackOverflow上的一篇高赞回答的不完全翻译,原文链接:meaning-of-classmethod-and-staticmethod-for-beginner Python面向对象 ...

  10. php面向对象--继承

    继承 extends 关键字来继承类 被继承的类,我们称之为父类 继承后的类,我们称之为子类 子类继承父类非私有的属性和方法 public 在本类,子类,以及类的外部都访问 protected 保护型 ...