Javascript学习笔记之 对象篇(一) : 对象的使用和属性


Posted in Javascript onJune 24, 2014
false.toString(); // 'false'
[1, 2, 3].toString(); // '1,2,3'

function Foo(){}
Foo.bar = 1;
Foo.bar; // 1

一个经常容易被误解的就是数字常量不能视为对象,实际上数字常量仍然可以视为对象。这是因为 Javascript 解析器在解析点操作符时而将其视为浮点数特征而犯下的错误。

2.toString(); // raises SyntaxError

实际上,我们有很多方法可以使得数字常量表现为一个对象。

2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first

对象作为数据类型

Javascript 中的对象可以当做哈希表使用,它们主要包含键与值的对应关系。
使用 {} 符号来创建一个简单的对象,这个新建的对象将从 Object.prototype 继承而来,并且不包含自己定义的属性。

var foo = {}; // a new empty object
// a new object with a 'test' property with value 12
var bar = {test: 12};

访问对象的属性

我们可以使用两种方式来访问 Javascript 的对象,分别是点操作符 . 和中括号操作符 [] 。

var foo = {name: 'kitten'}
foo.name; // kitten
foo['name']; // kitten

var get = 'name';
foo[get]; // kitten

foo.1234; // SyntaxError
foo['1234']; // works

两种操作符的效果几乎一样,唯一的不同是中括号操作符允许动态设置属性而且属性名可以有语法错误。(上例中的第三个情形已说明)

删除对象的属性

删除属性的唯一方法是使用 delete,将属性值设置为 undefined 或 null 只是移除了与属性相关的值,并没有真正删除属性本身。

var obj = {
 bar: 1,
 foo: 2,
 baz: 3
};
obj.bar = undefined;
obj.foo = null;
delete obj.baz;

for(var i in obj) {
 if (obj.hasOwnProperty(i)) {
 console.log(i, '' + obj[i]);
 }
}

上面的输出 bar undefined 和 foo null,只有 baz 真正被删除。
这里要说明一点,delete 只能删除属性,并不能删除变量。所以我们在定义变量时一定要养成写 var 的好习惯,任何时候,变量一定要使用 var 关键字才能声明。因为如果不写 var,变量会被误认给全局对象创建了一个新属性。

Javascript学习笔记之 对象篇(一) : 对象的使用和属性

这个例子相当清楚给出了答案,a 为变量,而 b 只是一个全局对象的属性而已。

命名对象的属性

var test = {
 'case': 'I am a keyword, so I must be notated as a string',
 delete: 'I am a keyword, so me too' // raises SyntaxError
};

对象的属性可以用普通字符或字符串来命名。同样也是由于 Javascript 解析器的一个错误设计,上例中的第二种表示方法在 ECMAScript 5 中将会抛出一个错误。
错误的原因是因为 delete 是一个关键词,所以必须使用一个字符串常量来命名来适应老版的 Javascript 解析器。

Javascript 相关文章推荐
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
js仿百度有啊通栏展示效果实现代码
May 28 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
Nov 14 Javascript
JS小游戏之仙剑翻牌源码详解
Sep 25 Javascript
Jquery操作Ajax方法小结
Nov 29 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 Javascript
javascript仿百度输入框提示自动下拉补全
Jan 07 Javascript
最棒的Angular2表格控件
Aug 10 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
Jul 27 Javascript
详解用async/await来处理异步
Aug 28 Javascript
基于Vue中的父子传值问题解决
Jul 27 Javascript
原生JS实现拖拽效果
Dec 04 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
Jun 23 #Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 #Javascript
a标签click和href执行顺序探讨
Jun 23 #Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 #Javascript
javascript将浮点数转换成整数的三个方法
Jun 23 #Javascript
jquery用data方法获取某个元素上的事件
Jun 23 #Javascript
如何正确使用javascript 来进行我们的程序开发
Jun 23 #Javascript
You might like
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
微信支付开发订单查询实例
2016/07/12 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
js转换对象为xml
2017/02/17 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
go语言计算两个时间的时间差方法
2015/03/13 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python实现购物车功能的方法分析
2017/11/10 Python
Python中正则表达式的用法总结
2019/02/22 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
档案接收函范文
2014/01/10 职场文书
土地转让协议书
2014/04/15 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
红楼梦读书笔记
2015/06/25 职场文书
行政处罚告知书
2015/07/01 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS