JS权威指南需要注意的知识点(1-6章)
客官快来看一看了,都给你浓缩好了,确定不进来搂一眼嘛,走过路过不要错过哟
in运算符
in运算符希望它的左操作数是一个字符串或可以转化为字符串,希望它的右操作数是一个对象,如果右侧的对象拥有一个名为左操作数值的属性名,则表达式返回true,否则为fasle
var obj = {X:1,Y:2}
"X" in obj // true
"Z" in obj //false
"toString" in obj //true:对象继承了toString()方法 var data = [7,8,9]
"0" in data //true: 查找的是下标0
1 in data //true:查找的下标1
3 in data // fasle: 下标3不存在
"toString" in obj //true:对象继承了toString()方法
注意点:无论是对象还是数组,toString等从原型链上继承的方法也能查找的到,但右操作数为数组时,若为数字或者可转化成数字的字符串则查找的是下标
逻辑与(&&)
在赋值的时候需要要特别注意:左假返左,左真返右
let a = false && 1 //a:false
let a = true && false //a:false
let a = true && 1 // a: 1
即赋值时&&左边为假,则直接返回左边,不管右边真假都不在继续看右边,若左边为真则直接返回右边,无论右边真假
eval()
eval()是js用来解释运行源代码组成的字符串的一个函数,它只接受一个参数,若参数不是字符串则返回该参数,而是字符串则将字符串当做JS源码进行编译。
特点:
使用了调用他的变量作用域环境,并且具有改变局部变量的能力
直接调用eval时,他会在调用他的上下文作用域执行,而间接调用则会使用全局对象作为其上下文作用域
严格模式下,只允许eval执行查询或者更改局部变量,不允许新建
delete
删除数组元素时并不会改变数组的长度,即相当于将被删除的元素设置为undefined
var
var声明的变量无法通过delete删除
变量声明语句会进行提升,赋值语句则还在语句原来的位置执行
var a = 12;
delete a;
console.log(a); //
function
函数声明语句会被进行函数声明提升,也就是说可以在一个函数声明之前调用它
if else
else总是和就近的if想匹配
for in
for in循环遍历时不会遍历对象的所有属性,而只是会遍历所有的可枚举属性,例如toString这种内置方法则并不会被遍历出来
try catch finally
不管try抛错不抛错,finally始终会执行
当try由于return,continue,break语句使得解释器跳出try语句块时,解释器在执行新的目标代码时会先执行finally中的逻辑
如果finally使用了return,continue,break或者throw语句使整个程序发生跳转,不管try是否抛出异常,这个方法仍然会正常返回
with
用于临时扩展作用域链,步骤:将扩展的对象添加到作用域链头部,执行语句,然后恢复作用域链。严格模式禁用,非严格模式也不推荐使用,因为会降低性能
with提供了读取对象属性的快捷方案,但是并不能创建对象的属性
use strict
意为使用严格模式,只有在实现了ECMAScript的JavaScript解释器中才起作用
只能出现在代码的开始或者函数体的开始
在严格模式中调用函数的一个this是undefined,而在非严格模式下则为全局对象
判断浏览器支持不支持严格模式(即判断有没有实现ECMAScript5)
var hasStrictMode = (function(){
"use strict";
return this === undefined
}())
对象
JS对象不仅仅是字符串到值的映射,除了保持自有的属性,JS对象还可以从一个称为原型的对象继承属性,对象的方法通常是继承的方法,这种'原型式继承' 是JS的核心特征。
定义对象时,属性名可以是包含空字符串在内的任意字符,但对象中不能存在两个同名的属性
var test = {
'':123
}
console.lof(test['']) // 123
JS对象和属性划分
内置对象:由ECMAScript规范定义的对象或类,如数组,函数,日期和正则
宿主对象:由JavaScript解释器所嵌入的宿主环境所定义的,客户端中表示网页结构的HTMLElement对象均是宿主对象
自定义对象:是由运行中的JavaScript代码创建的对象
自有属性:是直接在对象中定义的属性
继承属性:是在对象的原型对象中定义的属性
Object.create()
它创建一个新对象,第一个参数是这个对象的原型
创建一个没有原型的对象: Object.create(null)
对象
内置构造函数的原型是只读的
delete
delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性,例子在下方
delete只能删除自有属性,不能删除继承属性(要删除继承属性必须从定义这个属性的原型对象上删除,而且会影响所有继承了这个原型的对象)
delete也不可以删除那些可配置性为false的属性
a = {p:{x:1}}
b=a.p
delete a.p
console.log(a) // 1
枚举属性名称的方法
1. for in 会遍历对象中所有的可枚举属性(包括自有属性和继承属性)
2.object.keys() 返回一个数组,包括可枚举的自有属性
3.Object.getOwnPropertyNames() 返回所有自有属性的名称
Object.getOwnPropertyDescriptor()
获取自有属性的描述符
Object.defineProperty()
设置属性的特性,但是只能设置或者修改自有属性
Object.getPrototypeOf()
用来查询对象的原型
isPrototypeOf()
检测一个对象是否是另一个对象的原型
对象的三个属性
原型属性: 用来继承属性的
类属性: 是一个字符串,表示对象的类型信息
可扩展性:表示是否可以给对象添加新属性,内置对象和自定义对象是显式可扩展的,但是宿主对象的是否可扩展由JS引擎来决定
JSON
1.json的语法是JS语法的子集,它并不能表示JS里面的所有值,支持对象,数组,无穷大数字,true,false,null,并且可以序列化和还原,注意:NAN,Infinity和-Infinity序列化后的结果是null
2.日期对象序列化的结果是ISO格式的日期字符串,但JSON.parse()依旧保留他们的字符串形态,而不会将他们还原为原始日期对象
3.函数,RegExp对象和Error对象以及undefined不能序列化
4.JSON.stringify()只能序列化对象的可枚举的自有属性(即调用Object.keys()所列出的)
toString()
注意:
var test = {a:1,b:2}.toString()
console.log(test) // [object Object]
由于这种默认的toString()并不会携带很多有用的信息,有很多类都携带着自定义的toString(),例如Array.toString(),Date.toString(),以及Function.toString()等
toLocaleString()
返回一个表示这个对象的本地化字符串,Object中默认的toLocaleString()方法并不做任何本地化自身的操作,仅仅是调用toString()方法并返回对应值,但是Date和Number则对其做了定制,可以用它来对时间,日期,时间做本地化的转换。Array类的toLocaleString()和toString()不同的是每个数组的元素都会调用toLocaleString()方法转化为字符串,而不是调用toString()
JS权威指南需要注意的知识点(1-6章)的更多相关文章
- 【vue.js权威指南】读书笔记(第一章)
最近在读新书<vue.js权威指南>,一边读,一边把笔记整理下来,方便自己以后温故知新,也希望能把自己的读书心得分享给大家. [第1章:遇见vue.js] vue.js是什么? vue.j ...
- 《JS权威指南学习总结》
JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html
- 《JS权威指南学习总结--开始简介》
本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...
- 《JS权威指南学习总结--1.1语言核心》
1.1语言核心 --本节主要介绍<js权威指南>基础部分各章讲解内容和一些简单的示例 本小节内容: 一.第二章讲解js注释.分号和Unicode,第三章主要讲解js变量和赋值 简单示例: ...
- 《jQuery权威指南》学习笔记之第2章 jQuery选择器
2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制 1.代码更简单 示例2-1 使用javascript实现隔行变色 < ...
- Node.js权威指南学习记录
学习nodeJS权威指南的学习记录 导航: 1.console模块 2.全局变量 3.Buffer对象 4.事件对象 5.网络请求 6.文件操作对象 一. COMMON.js的学习.(commonJS ...
- 《JS权威指南学习总结--1.2客户端JS》
1.2客户端JS --本节讲述客户端JS部分各章节的讲述内容 一.第十三章讲述JS代码通过<script>标签来嵌入到HTML文件中. 二.第十四章讲解WEB浏览器脚本技术,并涵盖客户端J ...
- 《JS权威指南学习总结--第7章 数组》
内容要点: 一. JS数组是无类型的:数组元素可以是任意对象,并且同一个数组中的不同元素也可能有不同的类型.数组的元素甚至也可能是对象或其他属性,这允许创建复制的数据结构,如对象的数组和数组的数组. ...
- 【vue.js权威指南】读书笔记(第二章)
[第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...
随机推荐
- js作用域链和预编译
js引擎运行分为两步,预解析 代码执行 (1)预解析: js引擎会拿js里面所有的var还有 function 提升到当前作用域的最前面 (2)代码执行:按照代码书写的顺序从上往下执行 预解析分为:变 ...
- .netcore consul实现服务注册与发现-集群部署
一.Consul的集群介绍 Consul Agent有两种运行模式:Server和Client.这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关 ...
- (转)2019年给Java编程初学者的建议(附学习大纲)
本文链接:https://blog.csdn.net/javajlb/article/details/85920904 1. 引言这是一篇初学者干货,请耐心看完,希望对你有帮助 作为初学者的你,命中了 ...
- coo ceo cfo cto cio 区别
常见的CEO(Chief executive officer)首席执行官类似总经理.总裁,是企业的法人代表. COO(Chief operating officer)首席运营官 类似常务总经理CFO( ...
- 实战SpringCloud响应式微服务系列教程(第三章)
接着之前的: 实战SpringCloud响应式微服务系列教程(第一章) 实战SpringCloud响应式微服务系列教程(第二章) 1.1.3Reactor框架 响应式编程是一种编程模型,本节将介绍这种 ...
- 《Java 8 in Action》Chapter 8:重构、测试和调试
我们会介绍几种方法,帮助你重构代码,以适配使用Lambda表达式,让你的代码具备更好的可读性和灵活性.除此之外,我们还会讨论目前比较流行的几种面向对象的设计模式, 包括策略模式.模板方法模式.观察者模 ...
- python 31 升级版解决粘包现象
目录 1. recv 工作原理 2.升级版解决粘包问题 3. 基于UDP协议的socket通信 1. recv 工作原理 1.能够接收来自socket缓冲区的字节数据: 2.当缓冲区没有数据可以读取时 ...
- linux 如何初始化密码(解决mysql root用户登录不了的问题)
这是我遇到的问题 然后就想这可能是mysql安全模式的问题,解决思路:首先改变mysql的安全模式及密码校验问题,jinrumysql后在更改用户名密码. 1.首先将my.ini中加入在[mysqld ...
- Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
作者| 阿里云容器技术专家刘中巍(莫源) 导读:Kubernetes弹性伸缩系列文章为读者一一解析了各个弹性伸缩组件的相关原理和用法.本篇文章中,阿里云容器技术专家莫源将为你带来定时伸缩组件 kub ...
- 01 Python 基础数据类型
基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余 + - * / ** %...2.bool 布尔值 判断真假以及作为条件变量3.str 字符串 存 ...