Javascript学习笔记之 对象篇(一) : 对象的使用和属性

 更新时间:2014年06月24日 08:51:34   投稿:hebedich  
Javascript 中的一切都可以视为对象,除了两个特例:null 和 undefined。
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,变量会被误认给全局对象创建了一个新属性。

这个例子相当清楚给出了答案,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 解析器。

相关文章

  • Node.js生成HttpStatusCode辅助类发布到npm

    Node.js生成HttpStatusCode辅助类发布到npm

    本篇文章小编为大家介绍利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm,有需要的朋友可以参考一下
    2013-04-04
  • 深入解读JavaScript中的Iterator和for-of循环

    深入解读JavaScript中的Iterator和for-of循环

    这篇文章主要介绍了JavaScript中的Iterator和for-of循环,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-07-07
  • JavaScript中的分号插入机制详细介绍

    JavaScript中的分号插入机制详细介绍

    这篇文章主要介绍了JavaScript中的分号插入机制详细介绍,本文讲解JavaScript中各种情况下的分号插入机制,需要的朋友可以参考下
    2015-02-02
  • JavaScript中循环遍历Array与Map的方法小结

    JavaScript中循环遍历Array与Map的方法小结

    这篇文章主要介绍了JavaScript中循环遍历Array与Map的各种方法,利用的都是js入门学习中的基础知识,需要的朋友可以参考下
    2016-03-03
  • 浅谈JavaScript_DOM学习篇_图片切换小案例

    浅谈JavaScript_DOM学习篇_图片切换小案例

    这篇文章主要介绍了JavaScriptDOM图片切换小案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • javascript中call()、apply()的区别

    javascript中call()、apply()的区别

    这篇文章主要介绍了javascript中call()、apply()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Ajax的概述与实现过程

    Ajax的概述与实现过程

    Ajax是Asynchronous JavaScript XML的简写,不是一门新技术,而是对现有技术的综合利用。本文详细介绍了Ajax的概述与具体实现方法。有需要的朋友可以看下,希望对你有所帮助
    2016-11-11
  • Javascript Global对象

    Javascript Global对象

    Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在。
    2009-08-08
  • 分享javascript实现的冒泡排序代码并优化

    分享javascript实现的冒泡排序代码并优化

    本文给大家汇总介绍了几个个人收藏的JavaScript实现冒泡排序的代码,都是非常的不错,有需要的小伙伴可以参考下
    2016-06-06
  • 浅谈javascript 迭代方法

    浅谈javascript 迭代方法

    这篇文章主要介绍了浅谈javascript 迭代方法的相关资料,需要的朋友可以参考下
    2015-01-01

最新评论