- JavaScript中构造函数用的是大驼峰式写法。
- 含有逻辑表达式的赋值 比如 var a=1&&2&&0;
- 数组里面的arguments它是一个数组里面的实参列表(数组),可以让js函数的形参小于实参的个数。
- 未经声明的变量就赋值,就归window所有,即为全局变量;此外一切声明的全局变量,也归window所有。
- **js语言的特点-----预编译:你在后面声明的一个变量,你在前面可以直接给这个变量赋值并使用;即不用先声明而后使用。**预编译会生成一个AO对象,然后各个变量给被当作AO对象的属性,变量值是属性的值。全局变量相同,会生成一个GO对象(GO===window)…
- 但凡是内部的函数保存到了外部就会形成————闭包。闭包的作用——函数执行形成的私有作用域,保护里面的变量不受外界干扰的机制
- 闭包主要特征:
1、有两个或两个以上的函数有相互嵌套相互指向。
2、必有函数或结果被retrun - 立即执行函数 ——JavaScript 引擎在解析 JavaScript 代码时会“函数声明提升”当前执行环境(作用域)上的函数声明,而函数表达式必须等到 JavaScript 引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式。函数表达式的 后面 可以加括号立即调用该函数,函数声明不可以,只能以 fnName() 形式调用。
- 我们需要牢记两点:①__proto__和constructor属性是对象所独有的;② prototype属性是函数所独有的,因为函数也是一种对象{因为new 函数()时候,就会生成一个对象},所以函数也拥有__proto__和constructor属性。
- 作用域与作用链;原型与原型链。
- 你就记住在对象中定义函数叫方法
在外部定义函数就是函数
12
.
- *构造器(constructor)的作用?{constructor属性是指向该对象的构造函数}可以用来判断某对象是否由某个函数(类)实例化得来;可以通过调用constructor属性来生成同类对象;
- 构造函数的作用是实例化对象,也可实例化多个同类的对象。每个函数都默认有一个构造函数,可以用通过constructor属性来访问调用。
- call()与apply()方法的作用与区别??,作用——改变this指向,this会指向call()的第一个参数。区别——apply()第二个传入的参数必须是一个arguments数组。
- 命名空间——
- objec[方法]——建议枚举 for循环里面必须这么写(因为平常写object.方法()在底层会先转换成object[‘方法’]来执行 。
- 对象的枚举方法有哪四个??
- 深度克隆与浅度克隆的实现
-
es5严格模式——带来了哪些变化?
- with()和eval()方法都能够改变作用域,但增加程序运行的负担,放慢速度
- ES6 引入了块级作用域,让变量的生命周期更加可控。
- 块级作用域可通过新增命令 let 和 const 声明,所声明的变量在指定块的作用域外无法被访问。块级作用域在如下情况被创建:
在一个函数内部,
在一个代码块(由一对花括号包裹)内部
- 块级作用域有以下几个特点:
声明变量不会提升到代码块顶部
let/const 声明并不会被提升到当前代码块的顶部,因此你需要手动将 let/const 声明放置到顶部,以便让变量在整个代码块内部可用。