一,字符串
二,数值
三,函数
(1)函数定义
//函数声明 function sum(a,b){ return a+b; } //函数表达式 var sum = function(a,b){ return a+b; } //Function构造函数【这也是一个表达式,不建议使用,影响函数解析性能】、 var sum = new Function(‘a‘, ‘b‘, ‘return a+b‘)
(2)匿名函数与闭包
匿名函数:没有名字的函数
闭包:有权访问另一个函数作用域内的变量的函数。常见方式就是在一个函数内创建另一个函数。
闭包特点: (1)返回函数中的变量的最后一个值(即return的值) (2)闭包函数会一直留在内存中,直至销毁 (3)可用于创建私有变量
(3)this对象
this对象是在运行时基于函数的执行环境所决定的。
全局函数:this等于window
当函数作为某个对象的方法被调用的时候,this等于那个对象。
四,数组
五,对象
(1)js对象分类
参考:https://juejin.im/entry/58f85f87b123db006235e938
a,内部对象
Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError
b,内置对象: Global, Math
c,宿主对象
包括BOM对象和DOM对象
d,自定义对象
就是开发人员自己定义的对象
六,面向对象
(1)继承
a,基本原理:利用原型让一个引用类型继承另一个引用类型的属性和方法
b,构造函数,原型,实例的关系
参考链接: https://github.com/mqyqingfeng/Blog/issues/2
(1)prototype原型属性 函数才会有的属性,prototype属性是一个指针,指向一个叫原型的对象 (2)原型 每一个js对象(除了null)在创建的时候就会有一个相关联的对象,叫原型 (3)__proto__ 每一个js对象(除了null)都有的一个属性,叫__proto__,这个属性指向该对象的原型 (4)constructor构造器 每个原型都有一个constructor属性指向关联的构造函数
function Person(){} var person = new Person(); //下图为构造函数,原型,实例之间的关系
(c)原型链
上图中形成了一个原型链,
person -------__proto__-------Persion.prototype-------__proto__--------Object.prototype
(d)原型搜索机制
当以读取模式访问一个实例属性时,
首先,在实例中搜索该属性。(搜索person实例)若没有找到 ↓↓
其次,继续搜索该实例的原型(搜索Person.prototype),若没有找到 ↓↓
最后,直到搜索到原型链末端(搜索Object.Prototype)
(e)确定原型与实例之间的关系
//instanceof操作符 console.log(person instanceof Person); //true,即person是Persion的实例 console.log(Person instanceof Object); //true //isPrototypeOf()方法 console.log(Person.prototype.isPrototypeOf(person)); //true,即Person.prototype是person的原型 console.log(Object.prototype.isPrototypeOf(Person)); //true
原文:https://www.cnblogs.com/hiluna/p/9368784.html