获取属性

可以通过点(.)或方挂号([])运算符来获取属性的值。

对于点(.)来说,右侧必须是一个以属性名称命名的简单标识符。对于[]来说,方挂号内必须是一个计算结果为字符串的表达式。

var author = book.author;//得到book的'author'属性

var title = book['main title'];//得到book的'main title'

在ECMAScript 3中,点运算符后的标识符不能是保留字,比如,o.for或o.class是非法的;必须使用方挂号形式访问o['for']。

在ECMAScript 5中对此放宽限制。

在C/C++一些强类型语言中,对象只能拥有固定数目的属性,并且这些属性名称必须提前定义好。

由于javascript是弱类型语言,在任何对象中都可以创建任意数量的属性。

-----------------------------------------------------------------------------------------------------------------------------------

查询属性

查询一个不纯在的属性并不会报错,如果在对象o自身的属性或继承的属性中均未找到属性,返回undefined。

但是,如果对象不存在,那么试图查询这个不存在的对象的属性就会报错。null和undefined值都没有属性。

当然,给null和undined设置属性也会报类型错误。有一些属性是只读的,不能重新赋值。

book.author = 'abc';

-----------------------------------------------------------------------------------------------------------------------------------

删除属性

delete运算符可以删除对象的属性。delete只是断开属性和宿主对象的关联,而不会去操作属性中的属性

delete book.author;

delete book['main title'];

delete运算符只能删除自有属性,不能删除除继承属性。

---------------------------------------------------------------------------------------------------------------------------------------

检测属性

in运算符、hasOwnPreperty()和propertyIsEnumerable()方法来检测属性。

var o = {x:1};

'x' in o;//true

'y' in o;//flase

'toString' in o;//true

对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性。对于继承属性返回false

o.hasOwnProperty('x');//true

o.hasOwnProperty('y');//false

o.hasOwnProperty('toString');//false,toString是继承属性

对象的propertyIsEnumerable(),只有检测到是自有属性却这个属性的可枚举性为true时才返回true。

除了使用in,另一种更简单的方法是使用'!=='判断一个属性是否是undefined。

o.x!==undefined;//true

o.y!==undefined;//false

o.toString!==undefined;//true

JavaScript ---属性的更多相关文章

  1. (02)javascript属性

    私有属性(私有变量和私有方法) 实例属性(实例变量和实例方法) 静态属性(静态变量和静态方法) <!DOCTYPE html> <html lang="en"&g ...

  2. JavaScript 属性类型(数据属性 访问器属性)

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

  3. JavaScript 属性类型(数据属性和访问器属性)

    数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有 4 个描述其行为的特性. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修 ...

  4. gvim如何显示html属性代码提示? vim 如何显示 javascript属性及方法提示?

    gvim如何显示html属性代码 可以在vim中 显示 html, css, js等的属性/方法 提示: 一是: 在 ~/.vim/after/syntax/ 目录中 安装 css-color.vim ...

  5. 您是不是奇怪为什么 <script> 标签中没有 type="text/javascript" 属性?

    在 HTML5 中该属性不是必需的.JavaScript 是 HTML5 以及所有现代浏览器中的默认脚本语言!

  6. Javascript属性constructor/prototype的底层原理

    在Javascript语言中,constructor属性是专门为function而设计的,它存在于每个function的prototype属性中. 这个constructor保存了指向function ...

  7. JavaScript 属性描述符

    属性描述符(Property Descriptor)是 ES5 之后出现的概念,顾名思义,它用于描述属性应该是什么样,例如是否只读,能否枚举,能否可配置等.所有对象属性均可使用属性描述符来定义. 属性 ...

  8. javascript 属性的特性

    /* 属性的特性: 可以通过调用Object.getOwnPropertyDescriptor()可以获得某个对象特定属性的属性描述符, 从函数名字就可以看出, Object.getOwnProper ...

  9. JavaScript属性中的offsetLeft、offsetWidth、clientWidth、scrollLeft、scrollWidth、innerWidth

    1.offsetLeft和offsetTop 只读属性,返回当前元素与父辈元素之间的距离(不包括边框).其中父辈元素的取法是有门道的: (1).若父辈元素中有定位的元素,那么就返回距离当前元素最近的定 ...

随机推荐

  1. hibernate date类型插入数据库时精度只到日期没有时间

    由hibernate 的逆向工具从数据库表生成的*.hbm.xml ,对于数据库的date类型生成如下:        <property name = "crttime"  ...

  2. 如何把excel数据导入数据库

    这里介绍2种把excel数据导入oracle数据库的方法. 1. 在excel中生成sql语句. 1)在数据列的右侧,第一行的任何位置输入="insert into table(xx,yyy ...

  3. javascript中数组揭秘

    js中的数组很强大,不仅仅是一个数组,更是一个无所不能的集合. 创建 可以使用 数组字面量 方式创建: var arr = [] 或者 var arr = new Array() 添加元素 arr.p ...

  4. libevent (一) socket属性设置与初始化操作

    socket属性设置与初始化操作 libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名 ...

  5. [ucgui] 彩色条函数

    /* 颜色条 */ void ShowColorBar(void) { , y0 = , yStep = , i; int NumColors = LCD_GetDevCap(LCD_DEVCAP_N ...

  6. PHP与Java进行通信

    缘起: 最近做了一个电商平台与网银整合的小东西,程序是开源的 Ecmall的,网银的接口也很规范,给出的文档很全,唯一的小问题是,网银使用的签名和验签的lib是只有java和c的,对java还熟悉一些 ...

  7. atitit.插件体系设计总结o73.doc

    1. 两大类型:微内核(级联树形结构)与巨内核(管理容器,并联结构). 1 2. 通用插件接口 1 3. 插件的绑定and 初始化 2 4. 微内核插件平台设计 2 5. 参考 2 1. 两大类型:微 ...

  8. paip.java 调用c++ dll so总结

    paip.java 调用c++ dll so总结 ///////JNA (这个ms sun 的) 我目前正做着一个相关的项目,说白了JNA就是JNI的替代品,以前用JNI需要编译一层中间库,现在JNA ...

  9. python find函数

    Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1 ...

  10. 用node开发repl应用

    前言 每次看到一些库npm -g install xx然后,执行xx就可以跑起来,这不就是一个shell工具了吗,那么我不就可以不用学习shell语法,直接用js写命令行脚本了吗! 什么是REPL应用 ...