JS 知识总结中
2018-03-29 17:57
381 查看
笔记阶段排版乱
Undefined 唯一值
String
Boolean 两个值
Number 整数、浮点数 / NAN / Infinity
Null 唯一值
Symbol ES6
引用类型
Object
是所以对象的基础类型,其他所以类型都从 Object 继承了基本行为
一组数据与功能的集合
javascript中数据类型分为基本类型与引用类型;
基本类型值存储于栈内存中,传递的就是当前值,修改不会影响原有变量的值;
引用类型值其实也存于栈内存中,只是它的值是指向堆内存当中实际值的一个地址;索引引用传递传的值是栈内存当中的引用地址,当改变时,改变了堆内存当中的实际值;
对象是某个特定引用类型的实例。
Object
Array
Date
RegExp
Function
Boolean
Number
String
引用类型与基本包装类型的主要区别:
对象的生存期
引用类型的实例在执行流离开当前作用域之前,都一直保存在内存中
自动创建的基本包装类型的实例值存在于一行代码的执行瞬间
意在保存对象的变量,在真正保存前,最好初始化为 null
undefined 未经初始化的变量
基本类型值是简单的数据段
保存在栈内存中
从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本
引用类型
引用类型的值是对象
保存在堆内存中
包含引用类型的值的变量实际上包含的是指向该对象的指针
从一个变量向另一个变量复制引用类型的值,会创建这个指针的副本,因此两个变量会指向同一个对象
typeof 操作符
输出 u sb n o fuck
“undefined”
“string”
“boolean”
“number”
“object” //对象 或 null
“function”
“symbol”
instanceof
检测是哪种引用类型的对象
用以检测基本类型的值都返回false,因为其不是对象
variable instanceof constructor
e.g.
console.log(a instanceof Array) true/false
instanceof
instanceof 操作符的内部实现机制和隐式原型、显式原型有直接的关系。instanceof的左值一般是一个对象,右值一般是一个构造函数,用来判断左值是否是右值的实例。它的内部实现原理是这样的: 设 L instanceof R , 通过判断 L. proto . proto ….. === R.prototype,最终返回true or false,也就是沿着L的 proto 一直寻找到原型链末端,直到等于R.prototype为止。知道了这个也就知道为什么以下这些奇怪的表达式为什么会得到相应的值了
Function instanceof Object // true
Object instanceof Function // true
Function instanceof Function //true
Object instanceof Object // true
Number instanceof Number //false
动态类型/松散类型
变量可以用来保存任何类型的数据。
就是说,每个变量仅仅是一个用于保存值的占位符而已。
访问对象属性的方法 高三p85
点表示法
方括号表示法
属性名需要以”字符串“形式放入
优点: 可以通过变量来访问属性
new Object()
对象字面量
ES5中的Object.create()
创建对象的多种方式以及优缺点
https://github.com/mqyqingfeng/Blog/issues/15
作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。
JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。
作用域链生成过程
函数作用域
块作用域
ES3中 try/catch 结构中的 catch 分句
ES6 中 let 关键字等
new
根据《JS高级编程》里面的描述,new的时候一共做了四件事,
创建一个新的对象
把this指向该新对象
执行构造函数的代码
返回新对象
js的基本类型有哪些?引用类型有哪些?null和undefined的区别。
数据类型
简单 / 基本类型Undefined 唯一值
String
Boolean 两个值
Number 整数、浮点数 / NAN / Infinity
Null 唯一值
Symbol ES6
引用类型
Object
是所以对象的基础类型,其他所以类型都从 Object 继承了基本行为
一组数据与功能的集合
javascript中数据类型分为基本类型与引用类型;
基本类型值存储于栈内存中,传递的就是当前值,修改不会影响原有变量的值;
引用类型值其实也存于栈内存中,只是它的值是指向堆内存当中实际值的一个地址;索引引用传递传的值是栈内存当中的引用地址,当改变时,改变了堆内存当中的实际值;
引用类型
引用类型 是一种 数据结构。用于将数据和功能组织在一起。对象是某个特定引用类型的实例。
Object
Array
Date
RegExp
Function
基本包装类型(特殊的引用类型)
每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能调用一些方法来操作这些数据。Boolean
Number
String
引用类型与基本包装类型的主要区别:
对象的生存期
引用类型的实例在执行流离开当前作用域之前,都一直保存在内存中
自动创建的基本包装类型的实例值存在于一行代码的执行瞬间
null 与 undefined 的区别
NULL 空对象指针 / 空对象的引用意在保存对象的变量,在真正保存前,最好初始化为 null
typeof null //object
undefined 未经初始化的变量
alert(null == undefined) //true
Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?
基本类型 与 引用类型的区别
基本类型基本类型值是简单的数据段
保存在栈内存中
从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本
引用类型
引用类型的值是对象
保存在堆内存中
包含引用类型的值的变量实际上包含的是指向该对象的指针
从一个变量向另一个变量复制引用类型的值,会创建这个指针的副本,因此两个变量会指向同一个对象
typeof 操作符
输出 u sb n o fuck
“undefined”
“string”
“boolean”
“number”
“object” //对象 或 null
“function”
“symbol”
instanceof
检测是哪种引用类型的对象
用以检测基本类型的值都返回false,因为其不是对象
variable instanceof constructor
e.g.
console.log(a instanceof Array) true/false
instanceof
instanceof 操作符的内部实现机制和隐式原型、显式原型有直接的关系。instanceof的左值一般是一个对象,右值一般是一个构造函数,用来判断左值是否是右值的实例。它的内部实现原理是这样的: 设 L instanceof R , 通过判断 L. proto . proto ….. === R.prototype,最终返回true or false,也就是沿着L的 proto 一直寻找到原型链末端,直到等于R.prototype为止。知道了这个也就知道为什么以下这些奇怪的表达式为什么会得到相应的值了
Function instanceof Object // true
Object instanceof Function // true
Function instanceof Function //true
Object instanceof Object // true
Number instanceof Number //false
动态类型/松散类型
变量可以用来保存任何类型的数据。
就是说,每个变量仅仅是一个用于保存值的占位符而已。
访问对象属性的方法 高三p85
点表示法
方括号表示法
属性名需要以”字符串“形式放入
优点: 可以通过变量来访问属性
创建对象的多种方式
创建 [b]Object 实例的方式[/b]new Object()
对象字面量
ES5中的Object.create()
创建对象的多种方式以及优缺点
https://github.com/mqyqingfeng/Blog/issues/15
函数的作用域是什么?
作用域是指程序源代码中定义变量的区域。作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。
JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。
作用域链生成过程
js 的作用域有几种?
JavaScript 中的作用域有函数作用域
块作用域
ES3中 try/catch 结构中的 catch 分句
ES6 中 let 关键字等
new
根据《JS高级编程》里面的描述,new的时候一共做了四件事,
创建一个新的对象
把this指向该新对象
执行构造函数的代码
返回新对象