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 相关文章推荐
慎用 somefunction.prototype 分析
Jun 02 Javascript
JavaScript 类似flash效果的立体图片浏览器
Feb 08 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
Dec 04 Javascript
js 限制input只能输入数字、字母和汉字等等
Dec 18 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
Nov 26 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
jQuery 实现图片的依次加载图片功能
Jul 06 jQuery
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
Jan 09 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
vuex实现数据状态持久化
Nov 11 Javascript
vant组件中 dialog的确认按钮的回调事件操作
Nov 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
php 中英文语言转换类
2011/09/07 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php中的常用魔术方法总结
2013/08/02 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
常用简易JavaScript函数
2009/04/09 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
JavaScript中0和""比较引发的问题
2016/05/26 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Python内置函数之filter map reduce介绍
2014/11/30 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
省文明单位申报材料
2014/05/08 职场文书
基层党员公开承诺书
2014/05/29 职场文书
居安思危观后感
2015/06/11 职场文书
承兑汇票延期证明
2015/06/23 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL