JavaScript 对象 
除了数字、字符串、布尔值、null、undefined(都不可变)这5种简单类型,其他都是对象。 
JavaScript中的对象是可变的键控集合(keyed collections)。 
对象是属性的容器,其中每个属性都拥有名字和值。 
JavaScript中的对象是无类别的(class-free)的。它对新属性的名字和值没有约束。 
JavaScript包括一个原型链特性,允许对象继承另一对象的属性。

对象的检索: 
stooge[“first-name”]或者stooge.first-name(推荐,更紧凑可读性更好) 
||运算符可以用来填充默认值:var middle = stooge[“middle-name”] || “none”

引用: 
对象通过引用来传递,他们永远不会被拷贝。

原型: 
每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype这个JavaScript中的标准对象。 
原型连接在更新时不起作用。我们对某个对象做出改变时,不会触及到该对象的原型。原型连接只有在检索值时才会被用到。 

反射:
 
检查对象并确定对象有什么属性是很容易的事情,只要试着去检索该属性并验证取得的值。 
type of flight.number 
flight.hasOwnProperty(‘number’)

枚举: 
for in语句可用遍历一个对象中的所有属性名。该枚举过程将会列出所有的属性(包括函数和你可能不关系的原型中的属性,可以使用反射的任一种方式来排除不想要的值)

删除: 
delete运算符可以用来删除对象的属性。它将会移除对象中确定包含的属性。它不会触及原型链中的任何对象。 
delete stooge.nickname

减少全局变量污染: 
JavaScript可以很随意地定义那些可保存所有引用资源的全局变量。最小化使用全局变量的一个方法是在你的应用中只创建一个全局变量: 
var myapp = {}; 
该变量此时变成了你的应用的容器: 
myapp.stooge = {“first-name”:”Joe”,”last-name”:”Howard”}; 
只要把多个全局变量都整理在一个命名空间下,你将显著降低与其他应用程序、组件和类库之间产生糟糕的互相影响的可能性。你的程序也会变得更容易阅读,因为很明显myapp.stooge指向的是顶层结构。

JavaScript语言精粹读书笔记- JavaScript对象的更多相关文章

  1. JavaScript语言精粹读书笔记 - JavaScript函数

    JavaScript是披着C族语言外衣的LISP,除了词法上与C族语言相似以外,其他几乎没有相似之处. JavaScript 函数: 函数包含一组语句,他们是JavaScript的基础模块单元,用于代 ...

  2. <JavaScript语言精粹>-读书笔记(一)

    用object.hasOwnProperty(variable)来确定这个属性名是否为该对象成员,还是来自于原型链. for(my in obj){ if(obj.hasOwnProperty(my) ...

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

    前言:很久之前读过一遍该书,近日得闲,重拾该书,详细研究一方,欢迎讨论指正. 目录: 1.精华 2.语法 3.对象 4.函数 5.继承 6.数组 7.正则表达式 8.方法 9.代码风格 10.优美的特 ...

  4. JavaScript 语言精粹读书笔记

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

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

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

  6. 【Javascript语言精粹】笔记摘要

    现在大部分编译语言中都流行要求强类型.其原理在于强类型允许编译器在编译时检测错误.我们能越早检测和修复错误,付出的代价越小.Javascript是一门弱类型的语言,所以Javascript编译器不能检 ...

  7. JavaScript语言精粹学习笔记

    0.JavaScript的简单数据类型包括数字.字符创.布尔值(true/false).null和undefined值,其它值都是对象. 1.JavaScript只有一个数字类型,它在内部被表示为64 ...

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

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

  9. 《JavaScript语言精粹》笔记

    0.JavaScript的简单数据类型包括数字.字符创.布尔值(true/false).null和undefined值,其它值都是对象. 1.JavaScript只有一个数字类型,它在内部被表示为64 ...

随机推荐

  1. angularjs中的interval定时执行功能

    一个例子,用来显示当前实时时间,1秒钟刷新一次: <!DOCTYPE html> <html ng-app="myApp"> <head> &l ...

  2. es5 - array - join

    /** * join描述:将数组(或类数组对象)的所有元素连接到一个字符串中并返回此字符串. * join语法:arr .join([ separator]) * join参数:指定用于分隔数组的每对 ...

  3. 算法笔记_032:最长回文串(Java)

    目录 1 问题描述 2 解决方案 2.1 中心扩展法 2.2 Manacher算法   1 问题描述 给定一个字符串,求它的最长回文子串的长度. 2 解决方案 2.1 中心扩展法 此处,首先枚举出回文 ...

  4. 最全的iOS物理引擎demo

    概述 最全的iOS物理引擎demo,实现重力.碰撞.推力.摆动.碰撞+重力.重力弹跳.仿摩拜单车贴纸效果.防iMessage滚动效果.防百度外卖首页重力感应等效果! 详细 代码下载:http://ww ...

  5. SuperMap iManager跨网段配置许可

    作者:非法小恋 1.开启Docker容器1947映射 修改docker-compose.yml,在iManager的ports添加- "1947:1947" 2.重启iManage ...

  6. 把一个一中的字段更新另一个表中的t-sql

    UPDATE dbo.CommDescr SET Descr=(SELECT ba.content FROM dbo.blog_article ba WHERE ba.id=3) WHERE Comm ...

  7. 在ASP.Net和IIS中删除不必要的HTTP响应头[转]

    http://www.cnblogs.com/CareySon/archive/2009/12/14/1623624.html 引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP ...

  8. GuozhongCrawler系列教程 (4) StartContext具体解释

    StartContext是注入时全部seed的上下文信息假设爬虫在抓取过程其中须要共享一些变量.那么可使用StartContext作为容器. 构造器具体资料 StartContext public S ...

  9. EF6 Code First 模式更新数据库架构

    定义好实体类和上下文类 在 Package Manager Console 输入以下命令 1.Enable-Migrations 启用数据迁移功能,该命令通常会在项目根目录下生成 Migrations ...

  10. JEECG与帆软报表集成

    将FineReport 集成到自己的web项目中,生成报表,可以方便快捷的和自己的项目融合在一起.简化了利用poi的导出遇到的问题. 1.首先在FR中建立好一个模板      例如:我的这张模板是连接 ...