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 相关文章推荐
IE中createElement需要注意的一个问题
Jul 13 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
Apr 11 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
Sep 26 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
Oct 15 Javascript
js 日期比较相关天数代码
Apr 02 Javascript
JavaScript中的闭包介绍
Mar 15 Javascript
JS绘制生成花瓣效果的方法
Aug 05 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
Sep 17 Javascript
Vue filters过滤器的使用方法
Jul 14 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
laravel学习教程之关联模型
2016/07/30 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
对new functionName()定义一个函数的理解
2014/05/22 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
浅谈Python基础之I/O模型
2017/05/11 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
如何通过Python实现标签云算法
2019/07/02 Python
园林资料员岗位职责
2013/12/30 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
新郎婚礼致辞
2015/07/27 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers