js-权威指南学习笔记5
第六章 对象
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的更多相关文章
- js权威指南---学习笔记02
1.JS只有函数作用域,没有块级作用域这个概念: 它有一个特性——声明提前:在同一个函数中不同位置声明的变量,都被提前在函数开始的时候,执行声明操作:在原先位置执行赋值操作: 2.声明的全局变量,相当 ...
- js权威指南学习笔记(一)类型、值和变量
1.数据类型:原始类型(primitive type) 和对象类型(object type) 原始类型包括数字.字符串和布尔值: 除数字.字符串.布尔值.null(空).undefined(未定义), ...
- js权威指南---学习笔记01
1.当函数赋值给对象的属性时,就变为了方法:2.被零整除不报错,只会返回无穷大(Infinity)或者负无穷大.例外:零除以零等于非数字(NaN).3.NaN与任何值都不相等! 4.Javascrip ...
- js权威指南学习笔记(四)对象
1.创建对象 (1).通过对象直接量的方式创建 说明:对象直接量是由若干名/值对组成的映射表,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个映射表用花括号括起来. 如: 5 5 ...
- js权威指南学习笔记(三)语句
1.声明语句 如果用var声明的变量没有初始化,那么这个变量的值会被初始化为undefined. 函数声明语句的语法如下: 4 4 1 console.log(func ...
- js权威指南学习笔记(二)表达式与运算符
1.数组初始化表达式 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充undefined.如: 2 2 1 var arr = [1,,,,,6]; 2 ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...
- 《JS权威指南学习总结》
JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html
- 《JS权威指南学习总结--开始简介》
本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
随机推荐
- centOS 自动锁屏 解决办法
System-->preferences --> Screensaver中 找到 Lock screen when screensaver is active 把前面的钩去掉
- ELASTICSEARCH健康red的解决
今天惯例看统计报表, 才发现es集群悲剧了......昨天下午到今天早上, 持续报错, 写了1G的错误日志>_<#(暂无监控....) 当前状态: 单台机器, 单节点(空集群), 200W ...
- module.export与export的区别?
对于大多数node初学者而言, module.exports应该都是理解的, 但多出来一个exports获取就有些疑问了 疑问一: 既然有module.exports了为什么还要有exports? 疑 ...
- 模仿 AppStore 顶部动画
App Store 顶部动画 App Store 中 Games.Apps.Updates 的顶部动画的特点: 自然状态下是大标题,右边有一个 button 顶上去时,变成小标题,右边按钮消失 导航栏 ...
- django框架--cookie/session
目录 一.http协议无状态问题 二.会话跟踪技术--cookie 1.对cookie的理解 2.cookie的使用接口 3.cookie的属性 4.使用cookie的问题 三.会话跟踪技术--ses ...
- asp.net MVC 多系统目录结构
学习了几天的mvc5,发现vs把所有的控制器都放在同一个目录Controllers目录下,细想一下,假如一个项目包含几个系统: 行政办公系统.培训管理系统.督办管理系统.会议管理系统…… 如果还把控制 ...
- 图形学 shader教程推荐
https://www.bilibili.com/video/av37119580 http://edu.manew.com/my/course/96 http://edu.manew.com/my ...
- 运维甩锅神器---Jumpserver
简介jumpserver 也就是跳板机,堡垒机,主要用于免密钥登陆web终端,可以对所有操作进行记录,录像!对所有服务器进行资产管理, 给开发人员分配登陆主机的权限和sudo权限,为运维人员省了很多手 ...
- pandas数据分析
本篇主要介绍如何用pandas来分析一份刚拿到的数据集,即做数据挖掘或清洗的工作. 这里以贷款申请预测的数据来作为例子 一.查看基本信息 拿到数据首先看看大致结构,查看行列数,dataframe数据结 ...
- php的304方式
一般浏览器请求php是不会被缓存的,除非php直接显示的发送head 304 if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $browserCache ...