JavaScript ---属性

获取属性

能够经过点(.)或方挂号([])运算符来获取属性的值。javascript

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

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

var title = book['main title'];//获得book的'main title'对象

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

在ECMAScript 5中对此放宽限制。ip

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

因为javascript是弱类型语言,在任何对象中均可以建立任意数量的属性。it

-----------------------------------------------------------------------------------------------------------------------------------class

查询属性

查询一个不纯在的属性并不会报错,若是在对象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

相关文章
相关标签/搜索