1.说一下对变量提升的理解?
考点:执行上下文
- 变量定义
- 函数声明(注意和函数表达式的区别)
2.说明this几种不同的使用场景?
- 作为构造函数执行
- 作为对象属性执行
- 作为普通函数执行
- call apply bind
3.创建10个 <a>标签,点击的时候弹出来对应的序号?
4.如何理解作用域?
- 自由变量
- 作用域链,即自由变量的查找
- 闭包的两个场景
5.实际开发中闭包的应用?
-
闭包是做好保密工作,做好接口开发出去,数据源牢牢把控.
补充:
1.instanceof用于判断引用类型属于哪个构造函数的方法。
那么,我们如何准确的判断一个变量是数组类型呢?
var arr = [];
arr instanceof Array //结果为true,这样判断
有的人可能会想到 typeof arr,但typeof是无法判断是否是数组类型的,包括object
2.原型规则
1)所有的引用类型(数组、对象、函数)都具有对象特性,即可以自由扩展属性(除了“null”外)
2)所有的引用类型(数组、对象、函数)都有一个_proto_属性,属性值是一个普通的对象
3)所有的函数,都有一个prototype属性,属性值也是一个普通的对象
4)所有的引用类型(数组、对象、函数),proto属性值指向它的构造函数的prototype属性值
5)当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的proto(即它的构造函数的prototype)中寻找
所有的引用类型都有一个proto属性,所有的函数都有一个prototype属性
3.描述new一个对象的过程
创建一个新的对象
this指向这个新的对象
执行代码,即对this赋值
返回this
4.写一个原型链继承的例子
1 //一个封装DOM查询的例子
2 function Elem(id){ 3 this.elem = document.getElementById(id) 4 }
5
6 Elem.prototype.html = function (val) {
7 var elem = this.elem
8 if (val) {
9 elem.innerHTML = val
10 return this //链式操作
11 }else {
12 return elem.innerHTML
13 }
14 }
15
16 Elem.prototype.on = function (type,fn) {
17 var elem = this.elem
18 elem.addEventListener(type,fn)
19 //return this
20 }
21
22 var div1 = new Elem ('div1') 23
24 div1.html('<p>hello 博客园</p>').on('click',function () {
25 alert('clicked')
26 })//.html('<p>javacsript</p>')