一起来啃《JavaScript语言精粹》----对象

一、引言

任何编程语言在设计的时候就存在精华与糟粕并存,《JavaScript语言精粹》这本书就是取其精华,去其糟粕,能让我写出更优雅性能更好的JavaScript代码。

二、对象的检索

  • 1.[]后缀中括住一个字符串表达式。
  • 2.如果字符串表达式是一个字符串字面量,而且它是一个合法的标识符且不是保留字,那么也可以用 . 表示法代替。我们优先使用 . 表示法,因为它更紧凑且可读性更好。 obj['name-child'] obj.user.name
  • 如果你尝试检索一个不存在的成员属性的值,将返回undefined。|| 运算符可以用来填充默认值: var obj1 =obj['name-child'] || 'none' var obj1 =obj.age || 'unknown'
  • 尝试从undefined的成员属性中取值将会导致TypeError异常。这时可以通过 && 运算符来避免错误。

Paste_Image.png 三、引用 对象通过引用来传值。它们永远不会被复制: var x = obj; x.name = 'han'; var y = obj.name;//因为x和obj是指向同一个对象的引用,所以y为'han'

Paste_Image.png

四、原型

  • 没个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype,它是JavaScript中的标配对象。

Paste_Image.png

  • 原型连接在更新时是不起作用的。当我们对某个对象做出改变时,不会触及该对象的原型。

Paste_Image.png

  • 原型关系是一种动态关系。如果我们添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见。

Paste_Image.png

五、枚举

  • for in 语句可用来遍历一个对象中的所有属性名。该枚举过程将会列出所有的属性--包括函数和你可能不关心的原型中的属性--所以有必要过滤掉那些你不想要的值。最常见的过滤器是hasOwnProperty方法,以及使用typeof来排除函数:

Paste_Image.png

  • 属性名出现的顺序是不确定的,如果你想要确保属性以特定的顺序出现,最好的办法就是完全避免使用 for in 语句,而是创建一个数组,在其中以正确的顺序包含属性名:

Paste_Image.png

通过使用 for 而不是 for in ,可以得到我们想要的属性,而且不用担心可能发掘出原型链中的属性,并且我们按正确的顺序取得了它们的值。

六、删除

  • delete 运算符可以用来删除对象的属性。如果对象包含该属性,那么该属性就会被移除,它不会触及原型链中的任何对象。删除对象的属性可能会让来自原型链中的属性透现出来:

Paste_Image.png

七、减少全局变量污染

  • JavaScript可以很随意地定义全局变量来容纳你的应用的所有资源。但是它削弱了程序的灵活性,应该避免使用。 方法一、为你的应用只创建一个唯一的全局变量: var MyApp = {}; 该变量此时变成了你的应用的容器: MyApp.stooge = { 'first-name': 'Joe', 'last-name': 'Howard' };

原文发布于微信公众号 - 大数据钻研(bigdata118)

原文发表时间:2017-02-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

python:函数中五花八门的参数形式(茴香豆的『回』字有四种写法)

2844
来自专栏Python爬虫与数据挖掘

Python正则表达式初识(一)

首先跟大家简单唠叨两句为什么要学习正则表达式,为什么在网络爬虫的时候离不开正则表达式。正则表达式在处理字符串的时候扮演着非常重要的角色,在网络爬虫的时候...

922
来自专栏python3

python3--变量,布尔值,用户交互 input,if语句,while循环

已经运行了第一个python程序,即:终端---->cmd----->python 文件路劲。回车搞定~

2372
来自专栏Java技术分享

Java8的十大新特性你了解多少呢?

Java 8可谓是自Java 5以来最具革命性的版本了,她在语言、编译器、类库、开发工具以及Java虚拟机等方面都带来了不少新特性。我们来一一回顾一下这些特性。

27910
来自专栏章鱼的慢慢技术路

牛客网_Go语言相关练习_判断&选择题(6)

反射最常见的使用场景是做对象的序列化(serialization,有时候也叫Marshal & Unmarshal)。

1111
来自专栏数据小魔方

左手用R右手Python系列14——日期与时间处理

日期与时间格式数据处理通常在数据过程中要相对复杂一些,因为其不仅涉及到不同国家表示方式的差异,本身结构也较为复杂,在R语言和Python中,存在着不止一套方法来...

3327
来自专栏Crossin的编程教室

【Python 第37课】 字典

今天介绍一个python中的基本类型--字典(dictionary)。 字典这种数据结构有点像我们平常用的通讯录,有一个名字和这个名字对应的信息。在字典中,名字...

35511
来自专栏AI星球

值得玩味儿的14个Python编程小技巧

最近的工作中经常使用Python编写一些基本解决一些NLP的小问题,在自己的工作日记里面也记录了不少的python编程中常用的小"Trick",看到最近大...

1272
来自专栏人工智能LeadAI

值得玩味儿的14个Python编程小技巧

最近的工作中经常使用Python编写一些基本解决一些NLP的小问题,在自己的工作日记里面也记录了不少的python编程中常用的小"Trick",看到最近大家学习...

1081
来自专栏软件测试经验与教训

Python学习笔记(二)

2897

扫码关注云+社区

领取腾讯云代金券