第三章 对象

JavaScript的简单数据类型包括数字、字符串、布尔值(true和false)、null值和undefined值。其他
数字、字符串和布尔值“貌似”对象,因为它们拥有方法,但它们是不可变的。JavaScript中的对象是可
变的键控集合(keyed collections)。

对象是属性的容器,其中每个属性都拥有名字和值。属性的名字可以是包括空字符串在内的任意字符
串。属性值可以是除undefined值之外的任何值。

javascript包含一个原型链特性,允许对象继承另一对象的属性。正确的使用它能减少对象初始化的时间和内存消耗。

3.1 对象字面量

属性名可以是包含空字符串在内的任何字符串;属性值,合法的不强制性加引号first_name,不合法的要加引号“first-name”.

var person={"name":"John","age":18,"wife":{"name":"Lucy","agen":22}
}

3.2 检索

点.表示法或[]表示法。优先考虑使用.表示法,因为它更紧凑且可读性更好。如:

person.name;
person["name"];

|| 运算符可以用来填充默认值:

var status = flight.status || "unknow";

尝试从undefined的成员属性中取值将会导致TypeError异常。可以通过&&运算符来避免错误。

flight.equipment // undefined
flight.equipment.model // throw "TypeError"
flight.equipment && flight.equipment.model // undefined

3.3 更新

对象中的值可以赋值更新,如果已有属性,那么属性值被替换;若没有属性,则该属性会被扩充到对象中。

3.4 引用

对象通过引用传递,他们永远不会被拷贝。(传递的仅仅是地址)

var x = stooge;
x.nickname = 'Curly';
var nick = stooge.nickname;
// 因为x和stooge是指向同一个对象的引用,所以nick为'Curly'
var a = {}, b = {}, c = {};
// a、b和c每个都引用一个不同的空对象
a = b = c = {};
// a、b和c都引用同一个空对象

3.5 原型

(1)每个对象都连接到一个原型对象–Object.prototype这个标准对象。

(2)原型连接在更新时是不起作用的,当我们改变某个对象的属性值时,不会触及到对象的原型。(只针对于实例属性的修改,对于原型上的引用类型会改变对象的原型)

(3)原型链只有在检索值的时候用到,当尝试获取某个对象的属性值时,会沿着他的原型链从下到上依次找,直到Object.prototype,如果Object.prototype依然没有该属性,则返回undefined。这个过程称为委托。

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

3.6 反射

(1)typeof操作符用于确定属性的类型。

(2)hasOwnProperty对象是否拥有独立的属性,他不会检测原型链上的。

person.hasOwnProperty("name");//true
person.hasOwnProperty("c");//false

3.7 枚举

(1)for in语句会遍历对象的所有属性,包括原型链上的属性。可以用typeof和hasOwnPropery过滤。

(2)使用for in枚举一个对象中的所有属性名时,属性名出现的顺序是不确定的。如果想要确保属性以特
定的顺序出现,最好的办法就是完全避免使用for in语句,而是创建一个数组,在其中以正确的顺序
包含属性名。通过使用for而不是for in,可以得到我们想要的属性。

3.8 删除

delete操作符会删除对象的属性,但不会触及原型链上的属性。

3.9 减少全局变量污染

最小化使用全局变量的一个方法是你的应用中只创建唯一一个全局变量。

var MYAPP={};MYAPP.stooge={"first-name":"Joe","last-name":"Howard"
}
MYAPP.person={"name":"John","age":18,"wife":{"name":"Lucy","agen":22}
}

《javascript语言精粹》读书笔记 Item2 对象相关推荐

  1. 精通javascript、javascript语言精粹读书笔记

    于是选择两本书做最后的冲刺: 精通javascript(jquery之父著作),javascript语言精粹.希望我也能成为一个javascript的好手. Dom Elements的属性 精通jav ...

  2. JavaScript 语言精粹读书笔记

    最近在看 赵泽欣 / 鄢学鹍 翻译的 蝴蝶书, 把一些读后感言记录在这里. 主要是把作者的建议跟 ES5/ES5.1/ES6 新添加的功能进行了对比 涉及到的一些定义 IIFE: Immediatel ...

  3. JavaScript语言精粹-读书笔记(1)

    JS 语言精粹 蝴蝶书 点击链接下载电子书 这本书需要基本的JS基础和一定的经验.第一次看感觉很普通,工作一段时间后发现这本书很多细节很重要.这本书基于 ECMA3版本写的,现在已经普遍使用ECMA6 ...

  4. JavaScript语言精粹读书笔记

    JavaScript运算符优先级 运算符的优先级,依次降低 运算符 含义 .  []  () 提取属性与调用函数 delete new typeof + - ! 一元运算符 *  /  % 乘法.除法 ...

  5. JavaScript语言精粹--读书笔记三之replace()与正则

    今天有人问我repalce(),他那个题目很有意思.我也不会做,于是我就去查,结果发现就是最基础的知识的延伸. 所以啊最基础的知识才是很重要的,千万不能忽略,抓起JS就写代码完全不知到所以然,只知道写 ...

  6. Javascript语言精粹学习笔记之对象

    一.Javascript的简单类型包括 1.数字 number JS 不分整型与浮点型 两个浮点数相加,精度不够 2.字符串 string 3.布尔值 boolean true和false 4.nul ...

  7. 学习javascript语言精粹的笔记

    1.枚举: 用for in 语句来遍历一个对象中所有的属性名,该枚举过程将会列出所有的属性也包括涵数和方法,如果我们想过滤掉那些不想要的值,最为常用的过滤器为hasOwnProperty方法,以及使用 ...

  8. 《JavaScript语言精粹》笔记

    思考:lambda表达式 函数本质就是一个表达式, 普通的函数有函数名,函数名就像一部手机的标签, 撕去手机的标签,仍是一部手机. 第一章:精华 JavaScript建立在一些非常好的想法和少数非常坏 ...

  9. 《javascript语言精粹》读书笔记——函数

    这几天发现了一本好书,又薄又精辟,<JavaScript语言精粹> 看了对象.函数这两节,发现书如其名,确实是精粹. 函数的调用 函数调用的方式有四种: - 方法调用模式 - 函数调用模式 ...

最新文章

  1. Hyper-v3.0里无法压缩虚拟硬盘!虚拟机为Linux,硬盘为VHDX
  2. lnmp ubuntu mysql装不上_ubuntu1.8安装lnmp失败
  3. python如何爬虫-如何使用python爬虫爬取要登陆的网站
  4. 《程序出错后,程序员给测试人员的20条高频回复》
  5. C#中使用MoveTo和Path.ChangeExtension方法实现文件更改后缀名
  6. numpy(2)-非齐次线性方程组求解
  7. [转]写一个块设备驱动(第八章)
  8. 灵活、轻便,阿里开源简化GNN应用框架Graph-Learn
  9. macbook linux 双系统,MacBook Air 安装 Ubuntu 双系统
  10. [WP8] ListBox的Item宽度自动填满
  11. java ee是编程语言_什么是Java编程语言?
  12. 《自然》:这家中国AI公司的计划,超越了所有对手
  13. python基于内置的SimpleHTTPServer来搭建简易的FTP服务器实现局域网内文件共享
  14. 基于java电子病历管理系统设计与实现
  15. Webx mvc 源码
  16. S5p4418平台AP6212 WIFI稳定性的解决过程
  17. 如何实现1080P延迟低于500ms的实时超清直播传输技术
  18. IMPL10. formality 常用变量浅析
  19. 一个BAT大厂面试者整理的Android面试题目!
  20. 区块链之一 起源思想和本质

热门文章

  1. 锐捷客户端认证失败:用户物理MAC地址已被修改问题的解决方案
  2. NetCore+Dapper WebApi架构搭建(五):Swagger构建WebApi界面
  3. SAP-abap学习记录(21)
  4. Ajax+MySQL+PHP+jQuery实现异步请求页面并显示数据
  5. php继承父类的关键字,php继承父类函数
  6. UVM TLM的实现方式
  7. 数据结构笔记 —— 二叉树(前序、中序、后序遍历和查找)
  8. 《约会专家》片尾【约会宝典】总结
  9. ​特斯拉、Space X、Boring,一切都是为了“火星人”马斯克的回家梦?
  10. although 与 though 的区别