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 相关文章推荐
js字符编码函数区别分析
Dec 28 Javascript
jquery ajax 局部刷新小案例
Feb 08 Javascript
js动态生成Html元素实现Post操作(createElement)
Sep 14 Javascript
深入浅析Extjs中store分组功能的使用方法
Apr 20 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
jQuery中值得注意的trigger方法浅析
Dec 12 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
Dec 20 Javascript
浅谈React的最大亮点之虚拟DOM
May 29 Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 Javascript
小程序实现列表展开收起效果
Jul 29 Javascript
JavaScript canvas实现跟随鼠标移动小球
Feb 09 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技巧小贴士之下篇
2007/03/22 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
JS array 数组详解
2009/03/22 Javascript
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
Vuex提升学习篇
2018/01/11 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python函数装饰器用法实例详解
2015/06/04 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
中学教师培训制度
2014/01/31 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
一文搞懂Redis中String数据类型
2022/04/03 Redis