🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### JS数据类型 总共七种语言类型:Undefined String Number Boolean Symbol Null Object 每一种语言都广泛应用于:变量值 函数参数 函数返回值 运算结果等 基本数据类型:string number boolean symbol null undefined 复杂数据类型:object array function ### 基本数据类型和复杂数据类型的区别 1. 操作方式不同 2. 存储方式不同:栈(存取快,内存小)、堆(存取慢、内存大) ### JS判断数据类型 判断基本类型:typeof 除了null返回 "object",其余类型返回均正确 判断复杂类型:instanceof 判断元素是否是对象的实例 ### null和undefined的区别 1. null表示“没有对象”,即此处不应该有值 2. undefined表示此处应该有值,但是还没有定义 ### 对象的概念:重要 1. 一切引用类型都是对象(array function object),对象是属性的集合 2. 函数是对象 数组是对象 对象是对象 ### 对象都是通过函数创建的 1. let obj = { a: 1 } => let obj = new Object() obj.a = 1 2. let arr = [ 1 ] => let arr = new Array() arr[0] = 1 3. typeof Object || typeof Array => 'function' ### 函数原型 1. 函数都有一个默认的属性 prototype,这个函数的值是一个对象,这个对象中默认都有一个 constructor 属性指向这个函数本身 2. new Object(),Object函数是JS内置函数,除了 constructor 属性,还默认增加了其它的属性,它们的值都是函数 3. 在自定义构造函数中,我们经常会见到 Fn.prototype = { constuctor: Fn } 是因为我们覆盖了原型对象,所以需要 重新指定 4. 每一个对象都有一个隐式原型 __proto__ === Fn.prototype,这个属性指向创建该对象的函数的原型(prototype) 5. __proto__ 也是一个对象,Object.prototype.__proto__ === null ### 函数与变量的提升声明 ``` console.log(obj); //function obj () {} var obj \= {} function obj () {} console.log(obj);//obj ```