JavaScript ---属性

获取属性

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

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

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

时间: 2024-10-12 19:06:59

JavaScript ---属性的相关文章

Javascript属性:addEvent()用法浅析

做 web 应用的人,经常会用到 Javascript 来处理页面上的一些事情.表单验证我们不谈,在根据用户使用情况,显示/隐藏,或者执行一段 js function,的时候,我们需要和页面的 DOM 树打交道.看看 Gmail ,发送邮件,按下"发送"钮后,用 Ajax 在后端发送邮件内容,根据返回的状态,在编辑页面的上方直接显示一小段文字"您的邮件已经发送.". 通常的思想,我们会在那个发送按钮里面写上: onclick="javascript:sen

Javascript属性constructor/prototype的底层原理

在Javascript语言中,constructor属性是专门为function而设计的,它存在于每一个function的prototype属性中.这个constructor保存了指向function的一个引用.在定义一个函数(代码如下所示)时, function F() { // some code } JavaScript内部会执行如下几个动作: 为该函数添加一个原形属性(即prototype对象). 为prototype对象额外添加一个constructor属性,并且该属性保存指向函数F的

Javascript属性枚举(for/in)

ECMAScript规范并没有指定for/in循环按照何种顺序来枚举对象属性.但实际上,主流浏览器厂商的JavaScript实现是按照属性定义的先后顺序来枚举简单对象的属性,先定义的属性先枚举.如果使用对象直接量的形式创建对象,则将按照直接量中属性的出现顺序枚举.有一些网站和Javascript库是依赖于这种枚举顺序的,浏览器厂商不大可能会修改这个顺序. Javascript解释器枚举"简单"对象一种交互的属性枚举顺序.在下列情况下,枚举的顺序取决于具体的实现(并且是非交互的): 对象

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

ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把ECMAScript的对象想象成散列表,无非就是一组名值对,其中值可以是数据或函数.(高程三 P139) [译]JavaScript中对象的属性   <高程三 P139 属性类型> JavaScript笔记--数据属性和访问器属性 JavaScript中有两种不同类型的属性:命名数据属性(named

JavaScript 属性操作

1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 7 <script> 8 /* 9 HTML 的属性操作:读.写 10 属性名: 11 属性值: 12 13 读操作:获取.

javascript属性之get/set

var o = { get x(){ return 7; }, set x(val){ console.info("不能设置x的值"); } } o.x //7 读取x值的时候,会使用get方法 o.x = 9 //不能设置x的值 赋值x时,会使用set方法 get/set与原型链 //不包含get/set的原型 function p(){} p.prototype.z = 9; var p1 = new p(); p1.z //9 //对象上没有属性,将在原型链上查找 p1.z =

09.05 javascript 属性 内置属性 自定义属性 DOM文档对象模型

# 属性 ### 内置属性 * js对象和html标签有映射关系 ### 自定义属性 * getAttribute() * setAttribute() * hasAttribute() * removeAttribute() ### H5新增的自定义属性操作操作 * HTML:  `<tag data-attr="">` * JS :  element.dataset.attr ### 把属性当做属性节点 * getAttributeNode(attrname) # 元素

javascript属性操作

属性的读写 //属性添加 var obj = {x:1,y:2}; obj.z = 3; obj["m"] = 4; //属性的读取 var obj = {x: 1, y: 2, z: 3, m: 4}; for(p in obj){ console.info(p); }

javascript属性一览

getElementsByTagName() 方法可返回带有指定标签名的对象的集合. getElementsByName() 方法可返回带有指定名称的对象的集合. getAttribute() 方法返回指定属性名的属性值.    提示:如果您希望以 Attr 对象返回属性,请使用 getAttributeNode. innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML. innerText  属性设置或返回表格行的开始和结束标签之间的值,但不包括HTML.