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 php关于强制下载文件的代码
Aug 23 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
火狐下table中创建form导致两个table之间出现空白
Sep 02 Javascript
javascript实现左右控制无缝滚动
Dec 31 Javascript
Javascript之Math对象详解
Jun 07 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
原生js轮播特效
May 18 Javascript
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
小程序tab页无法传递参数的方法
Aug 03 Javascript
vue+element的表格实现批量删除功能示例代码
Aug 17 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 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中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
Jquery 动态生成表格示例代码
2013/12/24 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
详解python数据结构和算法
2019/04/18 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
tensorflow 环境变量设置方式
2020/02/06 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
小学安全教育材料
2014/02/17 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
JavaScript数组 几个常用方法总结
2021/11/11 Javascript