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 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
利用JS判断鼠标移入元素的方向
Dec 11 Javascript
详解AngularJS验证、过滤器、指令
Jan 04 Javascript
jQuery源码分析之init的详细介绍
Feb 13 Javascript
运用jQuery写的验证表单(实例讲解)
Jul 06 jQuery
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
Nov 02 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
Sep 26 Javascript
vue.js实现二级菜单效果
Oct 19 Javascript
如何手写一个简易的 Vuex
Oct 10 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
ThinkPHP空模块和空操作详解
2014/06/30 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
js操作二进制数据方法
2018/03/03 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
理解Python中的With语句
2016/03/18 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python pickle模块实现对象序列化
2019/11/22 Python
Python函数式编程实例详解
2020/01/17 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
学习雷锋精神演讲稿
2014/05/10 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
让生命充满爱观后感
2015/06/08 职场文书
Python爬取某拍短视频
2021/06/11 Python
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang