JavaScript对象_动力节点Java学院整理


Posted in Javascript onJune 23, 2017

JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。

JavaScript的对象用于描述现实世界中的某个对象。例如,为了描述“小明”这个淘气的小朋友,我们可以用若干键值对来描述他:

var xiaoming = {
  name: '小明',
  birth: 1990,
  school: 'No.1 Middle School',
  height: 1.70,
  weight: 65,
  score: null
};

JavaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开。注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。

上述对象申明了一个name属性,值是'小明',birth属性,值是1990,以及其他一些属性。最后,把这个对象赋值给变量xiaoming后,就可以通过变量xiaoming来获取小明的属性了:

xiaoming.name; // '小明'
xiaoming.birth; // 1990

访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''括起来:

var xiaohong = {
  name: '小红',
  'middle-school': 'No.1 Middle School'
};

xiaohong的属性名middle-school不是一个有效的变量,就需要用''括起来。访问这个属性也无法使用.操作符,必须用['xxx']来访问:

xiaohong['middle-school']; // 'No.1 Middle School'
xiaohong['name']; // '小红'
xiaohong.name; // '小红'

也可以用xiaohong['name']来访问xiaohong的name属性,不过xiaohong.name的写法更简洁。我们在编写JavaScript代码的时候,属性名尽量使用标准的变量名,这样就可以直接通过object.prop的形式访问一个属性了。

实际上JavaScript对象的所有属性都是字符串,不过属性对应的值可以是任意数据类型。

如果访问一个不存在的属性会返回什么呢?JavaScript规定,访问不存在的属性不报错,而是返回undefined:

var xiaoming = {
  name: '小明'
};
xiaoming.age; // undefined

由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:

var xiaoming = {
  name: '小明'
};
xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming['name']; // 删除name属性
xiaoming.name; // undefined
delete xiaoming.school; // 删除一个不存在的school属性也不会报错

如果我们要检测xiaoming是否拥有某一属性,可以用in操作符:

var xiaoming = {
  name: '小明',
  birth: 1990,
  school: 'No.1 Middle School',
  height: 1.70,
  weight: 65,
  score: null
};
'name' in xiaoming; // true
'grade' in xiaoming; // false

不过要小心,如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的:

'toString' in xiaoming; // true

因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性。

要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:

var xiaoming = {
  name: '小明'
};
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
csdn 批量接受好友邀请
Feb 19 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 Javascript
vue获取input输入值的问题解决办法
Oct 17 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
JS伪继承prototype实现方法示例
Jun 20 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 Javascript
JS实现进度条动态加载特效
Mar 25 Javascript
JavaScript订单操作小程序完整版
Jun 23 #Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 #Javascript
JavaScript实现简单的树形菜单效果
Jun 23 #Javascript
AngularJS 限定$scope的范围实例详解
Jun 23 #Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 #jQuery
js实现城市级联菜单的2种方法
Jun 23 #Javascript
JS使用正则表达式验证身份证号码
Jun 23 #Javascript
You might like
Protoss兵种介绍
2020/03/14 星际争霸
thinkphp循环结构用法实例
2014/11/24 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
python实现简单神经网络算法
2018/03/10 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
Python实现简单http服务器
2018/04/12 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
python绘制玫瑰的实现代码
2020/03/02 Python
详解python程序中的多任务
2020/09/16 Python
介绍一下Make? 为什么使用make
2013/12/08 面试题
Linux的主要特性
2016/09/03 面试题
初中高效课堂实施方案
2014/02/26 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
学年个人总结范文
2015/03/05 职场文书
导师工作推荐信
2015/03/27 职场文书
网吧管理制度范本
2015/08/05 职场文书
培训后的感想
2015/08/07 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
服务器nginx权限被拒绝解决案例
2022/09/23 Servers