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 相关文章推荐
javascript常用代码段搜集
Dec 04 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
Mar 03 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
Jun 24 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
JavaScript 节流函数 Throttle 详解
Jul 04 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
AngularJS入门教程之Select(选择框)详解
Jul 27 Javascript
js实现带缓动动画的导航栏效果
Jan 16 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
jQuery选择器之子元素选择器详解
Sep 18 jQuery
如何使用vuex实现兄弟组件通信
Nov 02 Javascript
小程序实现多列选择器
Feb 15 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
PHP 可阅读随机字符串代码
2010/05/26 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
TypeScript入门-接口
2017/03/30 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
全面了解python字符串和字典
2016/07/07 Python
Python程序退出方式小结
2017/12/09 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
python 构造三维全零数组的方法
2018/11/12 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
称象教学反思
2014/02/03 职场文书
贺卡寄语大全
2014/04/11 职场文书
岗位工作说明书
2014/07/29 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
采购员岗位职责范本
2015/04/07 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang