注:if里面不能声明函数;
undefined和null不能调用tostring()方法;
typeof
typeof为操作符,在未定义变量时用typeof操作不会报错只会返回“undefined”未定义的字符串;
typeof(null())返回字符串“Object”;
typeof后面的括号可写可不写;
“||”运算符比“=”优先级高
闭包
通俗的理解必包就是内部函数被保存到了外部必定生成必包;(函数嵌套)
闭包会导致作用域链不释放,作用域链不释放会造成内存泄漏(内存泄漏就是内存占用加载慢)
特点:1 可实现封装,私有化属性;
2 可做累加器; 3 可做缓存(存储结构);4.模块化开发防止污染全局变量;
立即执行函数
只执行一次,执行完就立即消失;
只有表达式才能被执行符号执行;
(函数声明不能使用立即执行函数,只有函数表达式可以)
立即执行函数也有返回值;
构造函数
大驼峰式命名规则
三段论:
在函数体最前面隐士加上this={};
执行this.xxx = xxx;
隐式返回this;
包装类
只有对象有数属性和方法,原始值是没有的;
原型(prototype)
原型也是对象;
利用特点可以提取共有属性;
原型是内部隐式属性;
call和apply指向
call:改变this指向;
apply:也该变this指向;
例如: person.call() = person()
call 和 apply传参列表不同:
apply:只能传数组
call:需要把实参按照行参的个数传进去
apply:需要产一个arguments
继承
继承模式、命名空间,对象枚举
传统形式:原型链(继承了过多没用的属性)
借用构造函数:不能继承原型,多走一个属性
共享原型:不能随便改变自己的原型
圣杯模式
枚举:instanceof