第六章 对象

1、对象的方法通常是继承的属性。这种原型式继承是JS的核心特征。

2、除了名字和值之外,每个属性还有一些与之相关的值,称为属性特性——可写/可枚举/可配置。数据属性的四个特性——值、可写性、可枚举性、可配置性;存取器四个特性——读取、写入、可枚举性、可配置性。

3、除了包含属性之外,每个对象还拥有三个相关的对象特性(对象的三个属性)——对象的原型/对象的类/对象的扩展标记。

4、可以通过对象直接量/关键字new和(ES5的)Object.create()函数来创建对象。

5、如果在一个重复调用的函数中的循环体内使用了对象直接量,它将创建很多新对象,并且每次创建的对象的属性值也有可能不同。

6、没有原型的对象为数不多,Object.prototype是其中之一,它不继承任何属性。

7、Object.create()函数可以通过传入参数null来创建一个没有原型的新对象,但通过这种方式创建的对象不会继承任何东西,甚至不包括基础方法。如果想创建一个普通的空对象,需要传入Object.prototype。

8、对象查询时使用方括号和一个字符串,看起来像是数组,这种数组就是我们所说的关联数组,也称为散列/映射/字典。JS对象都是关联数组。

9、对象查询使用方括号的方式时,方括号内字符串时动态的,可以在运行时更改。使用.和标识符的方式时,标识符是静态的,必须写死在程序里。

10、不能通过同名自有属性覆盖只读的继承属性。

11、delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性。要确保销毁对象,要遍历属性中的属性,依次删除。delete运算符只能删除自有属性,不能删除继承属性。

12、检测属性:可以通过in操作符、hasOwnProperty()和propertyIsEnumerable()方法来完成这个工作,甚至仅通过属性查询也可以。

13、in操作符在对象的自有属性或继承属性中包含这个属性则返回true。对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性,对于继承属性它将返回false。结合使用可以检测某属性是否是继承属性。

14、propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测到是自有属性且这个属性可枚举时返回true。

15、枚举属性:for/in循环、ES5的Object.keys()函数(可枚举的自有属性)和Object.getOwnPropertyNames()(返回所有自有属性,不仅是可枚举的)。

16、属性值可以用一个或两个方法替代,这两个方法就是getter和setter。由getter和setter定义的属性称作存取器属性。

17、通过调用Object.getOwnPropertyDescriptor()可以获得某个对象特定属性的属性描述符(属性描述符对象)。要想设置属性的特性,或者让新建属性具有某种特性,需要调用Object.defineProperty(),传入要修改的对象、要创建或修改的属性的名称以及属性描述符对象。

18、要想检测一个对象是否是另一个对象的原型或处于原型链中,使用isPrototypeOf()方法。类似于instanceof运算符。

19、要想获得对象的类,可以调用对象的toString()方法,然后提取字符串的第8个到倒数第二个位置之间的字符。Object.prototype.toString.call(o).slice(8,-1);

20、ES5提供了内置函数JSON.stringify()和JSON.parse()用来序列化和还原JS对象。

21、对象的可扩展性:Object.preventExtensions()不可添加,但已有的可删可改。Object.seal()不可添加删除,已有的可改。Object.freeze()不可添加删除更改(存取器属性不受影响)。

js-权威指南学习笔记5的更多相关文章

  1. js权威指南---学习笔记02

    1.JS只有函数作用域,没有块级作用域这个概念: 它有一个特性——声明提前:在同一个函数中不同位置声明的变量,都被提前在函数开始的时候,执行声明操作:在原先位置执行赋值操作: 2.声明的全局变量,相当 ...

  2. js权威指南学习笔记(一)类型、值和变量

    1.数据类型:原始类型(primitive type) 和对象类型(object type) 原始类型包括数字.字符串和布尔值: 除数字.字符串.布尔值.null(空).undefined(未定义), ...

  3. js权威指南---学习笔记01

    1.当函数赋值给对象的属性时,就变为了方法:2.被零整除不报错,只会返回无穷大(Infinity)或者负无穷大.例外:零除以零等于非数字(NaN).3.NaN与任何值都不相等! 4.Javascrip ...

  4. js权威指南学习笔记(四)对象

    1.创建对象 (1).通过对象直接量的方式创建 说明:对象直接量是由若干名/值对组成的映射表,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个映射表用花括号括起来. 如:       5 5   ...

  5. js权威指南学习笔记(三)语句

    1.声明语句 如果用var声明的变量没有初始化,那么这个变量的值会被初始化为undefined. 函数声明语句的语法如下:       4 4           1 console.log(func ...

  6. js权威指南学习笔记(二)表达式与运算符

    1.数组初始化表达式 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充undefined.如:       2 2           1 var arr = [1,,,,,6]; 2 ...

  7. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  8. 《JS权威指南学习总结》

    JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html

  9. 《JS权威指南学习总结--开始简介》

    本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...

  10. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

随机推荐

  1. 微信小程序组件化实践

    Do Not Repeat Yourself 如何提高代码质量,方法有许多:抽象.模块.组件化,我认为它们的中心点都是--Do Not Repeat Yourself. 小程序组件化 我们先看看小程序 ...

  2. leetcode-162-寻找峰值

    题目描述: 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返回任何一 ...

  3. 【NOIP2017】逛公园 最短路+DP

    诶,去年场上不会处理$0$的环,只拿了$60$有点可惜. 我们先不管边边权为$0$的边. 我们先跑一次最短路,令$dis[u]$表示从$1$至$u$的最短路的长度. 那么根据题目的要求,从起点走到$u ...

  4. C#数据库连接方法

    一:C# 连接SQL数据库 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myP ...

  5. WebDriverAPI(8)

    判断页面元素是否存在 测试网址 http://www.baidu.com Java语言版本API实例 @Test public void testIsElementPresent(){ driver. ...

  6. (转)inspect — Inspect live objects

    原文:https://docs.python.org/3/library/inspect.html 中文:https://www.rddoc.com/doc/Python/3.6.0/zh/libra ...

  7. 监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)

    线性回归 首先要明白什么是回归.回归的目的是通过几个已知数据来预测另一个数值型数据的目标值. 假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就 ...

  8. 第12章—使用NoSQL数据库—使用MongoDB+Jpa操作数据库

    使用MongoDB+Jpa操作数据库 SpringData还提供了对多种NoSQL数据库的支持,包括MongoDB;neo4j和redis.他不仅支持自动化的repository,还支持基于模板的数据 ...

  9. phpstorm扩展

    1, CodeGlance 代码地图插件 &lt;img src="https://pic1.zhimg.com/50/v2-721f173bafcb9b60853819c32780 ...

  10. Android Studio打开非本机项目比较慢的问题。

    使用Android Studio打开其他项目的时候,如果使用的AS版本.gradle不同的话,会在打开项目的时候下载gradle版本,网速不好的情况下回非常的慢. 解决方案: 1.将本机创建的AS项目 ...