前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一起来啃《JavaScript语言精粹》----对象

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

作者头像
用户1667431
发布2018-04-18 16:26:04
7310
发布2018-04-18 16:26:04
举报
文章被收录于专栏:大数据钻研大数据钻研

一、引言

任何编程语言在设计的时候就存在精华与糟粕并存,《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

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

六、删除

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

Paste_Image.png

七、减少全局变量污染

  • JavaScript可以很随意地定义全局变量来容纳你的应用的所有资源。但是它削弱了程序的灵活性,应该避免使用。 方法一、为你的应用只创建一个唯一的全局变量: var MyApp = {}; 该变量此时变成了你的应用的容器: MyApp.stooge = { 'first-name': 'Joe', 'last-name': 'Howard' };
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据钻研 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引言
  • 二、对象的检索
  • 四、原型
  • 五、枚举
  • 六、删除
  • 七、减少全局变量污染
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档