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 text,radio,checkbox,select操作实现代码
Jul 09 Javascript
js 操作select和option常用代码整理
Dec 13 Javascript
解决js下referer兼容各大浏览器的方法
Nov 03 Javascript
jQuery中:file选择器用法实例
Jan 04 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
Feb 18 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
Mar 27 Javascript
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
Nov 24 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
JS代码优化的8点建议
Feb 04 Javascript
vue实现简单学生信息管理
May 30 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
各种战术和打法的原创者
2020/03/04 星际争霸
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php析构函数的简单使用说明
2015/08/24 PHP
JavaScript的类型简单说明
2010/09/03 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
pandas多级分组实现排序的方法
2018/04/20 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
浅析python参数的知识点
2018/12/10 Python
python系列 文件操作的代码
2019/10/06 Python
python实现查找所有程序的安装信息
2020/02/18 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
jupyter notebook 多行输出实例
2020/04/09 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
销售口号大全
2014/06/11 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
小学教师岗位职责
2015/04/02 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
民事纠纷协议书
2016/03/23 职场文书