细说JavaScript对象(1):对象的使用和属性

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']; // kittenvar get = 'name';
foo[get]; // kittenfoo.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 解析器。

 

 

参考:

http://segmentfault.com/blog/stephenlee/1190000000477429

http://bonsaiden.github.io/JavaScript-Garden/#object.general

 

 

延伸阅读:

细说JavaScript对象(1):对象的使用和属性

细说JavaScript对象(2):原型对象

细说JavaScript对象(3):hasOwnProperty

细说JavaScript对象(4): for in 循环

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记:InnoDB存储结构及多版本实现

因为InnoDB是多版本化的数据库存储引擎, 它必须在表空间中保存关于旧版本数据行的信息。这个信息被存在名为rollback segment(类似于Oracle中的回滚段)的数据结构中。 在内部,InnoDB给数据库中的每一行添加三个域。一个是6字节的DB_TRX_ID域&…

access2003的使用

access2003中如何用sql语句创建表 http://zhidao.baidu.com/link?urldinVbwoI20Xz__NbcIeBPdkjeXRWmZNB0xJvdr0eMBqNflv_JcWgUoPw3ozFfqnTQ9FLkNv0XXs9loDR2Oc7Oq SQL 数据定义查询创建表: 第一张表(藏书) CREATE TABLE 藏书 (书号 Text(10)…

再见安卓 鸿蒙,安卓系统:鸿蒙系统,正式再见

原标题:安卓系统:鸿蒙系统,正式再见华为手机不能使用谷歌GMS服务已经差不多一年时间,据悉华为明年最新旗舰P40系列仍然不能使用GMS,最近爆料大神数码闲聊站称谷歌将不给华为手机授权Android R(安卓11系统),…

Android 隐式意图的配置

本文地址:http://www.cnblogs.com/wuyudong/p/5677473.html,转载请注明源地址。 《Android 显示意图激活另外一个Actitity》一文介绍了一种激活Activity的方法 本文通过清单文件(AndroidManifest.xml)来实现意图的配置 Intent-fil…

fpga中wire和reg的区别

wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会反映输入。wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会…

Django Tips

新加admin.py需重启自带Web服务器才能显示Admin保存设置外键的默认值http://stackoverflow.com/questions/937954/how-do-you-specify-a-default-for-a-django-foreignkey-model-or-adminmodel-fieldhttp://stackoverflow.com/questions/5632848/django-default-value-for-user…

wordpress html音乐,WordPress引用百度Ting音乐方法

对于个人博客来说,要在文章中添加音乐,如果放在自己服务器上,一方面是成本问题,其次,大部分博主用的国外服务器,而国外对版权看得比较重,基本上不允许上传音乐,所以我们通常都是通过…

开发工具MyEclipse如何支持可视化设计HTML和JSP页面

转自:http://tigerben.iteye.com/blog/722128 这两天一直在设计和开发JSP页面,所有标签都得通过自己手工编辑深感厌烦,印象中以前是有看到过MyEclipse是支持拖放HTML常用控件的,所以为此百度了一把,终有所获。 MyEclip…

转:c# Linq 的分页[转]

转:http://www.cnblogs.com/leleroyn/archive/2008/05/14/1196811.html 很多学习Linq的朋友肯定有自己所不同的方法,考虑这个问题我所想到的是 用Take(),Skip(),TakeWhile(),SkipUntil()中的方法来实现 首先看Take()是否可用 Take方法的作用是从结果中取…

html edge浏览器 图片,浏览器时序图及 Microsoft Edge 构架

本文又是我的作业,完成思路借鉴了 版权说明。作业要求针对一款典型浏览器,绘制浏览器处理时序图对用户界面进行操作(如拖拽窗口)带有 JavaScript 脚本 HTML 文档查阅资料,绘制 Edge 浏览器的参考架构浏览器时序图对用户界面进行操作(如拖拽窗…

您需要了解的跨阻放大器——第1部分

跨阻放大器(TIA)是光学传感器(如光电二极管)的前端放大器,用于将传感器的输出电流转换为电压。跨阻放大器的概念很简单,即运算放大器(op amp)两端的反馈电阻(RF&#xff…

Objective-C组合模式(Composite)

什么是组合模式? 官方:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使用户使用单独对象和组合对象具有一致性。 个人理解:组合模式就相当于一个大家族,每个人都是家族中的一部分,整个家族就…

WP7应用开发笔记(3) 界面设计

界面设计 回顾一下按钮清单: 播放控制播放/暂停Space 停止F4 快进Right 快退Left 快进X2ControlRight 快退X2ControlLeft 快进X3AltRight 快退X3AltLeft音量放大Up 缩小Down 静音M节目下一个PageDown 上一个PageUp基本上就是把这些按钮布置到480*800的屏幕上。 快进…

html手机显示评论列表页面,请问如何完美显示评论列表头像

目前具体思路是通过轮询构建头像,条件是通过判断评论区条目length。问题是有时依然无法显示评论区头像。以下是目前的代码:function showAvatar() {$(.feedbackItem).each(function() {let avatar $(this).children(.feedbackCon).children(span:last).…

几何画板中可以这样选择对象

在使用几何画板过程中,一些用户朋友发现几何画板虽然是在Windows平台上运行的软件,但它选择对象的选择方式常常与一般的Windows绘图软件是有一些差别的,下面将通过详细的讲解,让大家对几何画板选择对象方法有比较系统全面的了解。…

2012 不宜进入的三个技术点(下)

赖勇浩(http://laiyonghao.com)CC 在 2011 年其实风头甚劲,C2011 标准出台,gcc/msvc/clang 都很快速地支持了许多新特性,新兴的移动设备的性能较差,更是 C 的新舞台,在这个时候唱衰 C&#xff0…

菜鸟做HTML5小游戏 - 刮刮乐

继上篇翻翻乐之后,又来刮刮乐。还是先上效果图: 开始demo的世界: 1.css去绘制界面效果。(源码提供) 2.原理:要实现刮刮卡内容的出现,我用div做了背景层去显示刮出的内容结果【重点】。中间Canva…

1 计算机主机里面都有些什么东西,计算机主机和外设分别包括那些东西?

___耐撕Nice___的回答:1、主机是指计算机除去输入输出设备以外的主要机体部分。也是用于放置主板及其他主要部件的控制箱体(容器Mainframe)。通常包括 CPU、内存、主板、光驱、电源、以及其他输入输出控制器和接口。在网络技术中是关于发送与接收信息的终端设备。2、…

AppDynamics赵宇辰:硅谷APM独角兽,打造DevOps领域的智能大脑

近来,关于机器学习的报道很多,国内外的大型互联网企业都在着手对机器学习的研究。对应用性能的高效管理,首先要了解应用的一手数据,通过传统的数据获取方式已经不能满足企业的发展和市场环境,这就需要借助机器学习的技…

江苏有保障的计算机应用技术,2022年江苏单招计算机应用技术专业公办学校名单...

2021年高职单招升学一对一咨询蒲善婷:18983252108(微信)很多考生都存在一个疑问,到底该选择什么样的单招学校和专业?其实啊,我们在选择时首先要了解学校的办学情况和招生专业,看看有没有是不是符合自己的选择条件,是否…