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 相关文章推荐
javascript 写类方式之四
Jul 05 Javascript
javascript 面向对象编程基础:封装
Aug 21 Javascript
jquery下组织javascript代码(js函数化)
Aug 25 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
使用Raygun来自动追踪AngularJS中的异常
Jun 23 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
Jul 18 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
详解js删除数组中的指定元素
Oct 31 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 Javascript
详解TypeScript中的类型保护
Apr 29 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获取毫秒级时间戳的方法
2015/04/15 PHP
PHP网络操作函数汇总
2015/05/18 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
python搭建简易服务器分析与实现
2012/12/15 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python中map()与zip()操作方法
2016/02/27 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
django用户登录验证的完整示例代码
2019/07/21 Python
基于Django统计博客文章阅读量
2019/10/29 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
小学教师师德感言
2014/02/10 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫