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利用div背景,做一个竖线的效果。
Nov 22 Javascript
JQery 渐变图片导航效果代码 漂亮
Jan 01 Javascript
javascript计算用户打开网页的停留时间
Jan 09 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
May 18 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
Dec 09 Javascript
Vue自定义指令使用方法详解
Aug 21 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
vue src动态加载请求获取图片的方法
Oct 17 Javascript
JavaScript array常用方法代码实例详解
Sep 02 Javascript
vue vant中picker组件的使用
Nov 03 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
Feb 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
pw的一个放后门的方法分析
2007/10/08 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
JS 树形递归实例代码
2010/05/18 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python删除过期文件的方法
2015/05/29 Python
python多线程扫描端口(线程池)
2019/09/04 Python
Python数据库小程序源代码
2019/09/15 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
python 读取、写入txt文件的示例
2020/09/27 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
Python里面如何实现tuple和list的转换
2012/06/13 面试题
培训主管岗位职责
2014/02/01 职场文书
情人节活动策划方案
2014/02/27 职场文书
家装业务员岗位职责
2015/04/03 职场文书