1、说说你对 this 的理解
1、this是Javascript语言的一个关键字,它代表函数运行时自动生成的一个内部对象,只能在函数内部使用。this指的是调用函数的那个对象。his的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象
2、call\apply\bind 的区别和联系?
在JS中,这三者都是用来改变函数的this对象的指向的
call()和apply()的区别:
相同点:都是调用一个对象的一个方法,用另一个对象替换当前对象(功能相同)
不同点:参数书写方式不同
call()的第一个参数是this要指向的对象,后面传入的是参数列表,参数可以是任意类型,当第一个参数为null、undefined的时候,默认指向window;
apply():第一个参数是this要指向的对象,第二个参数是数组
call()和bind()的区别:
相同点:都是用来改变this的指向
不同点:call()改过this的指向后,会再执行函数,bind()改过this后,不执行函数,会返回一个绑定新this的函数
3、下面代码执行结果
1 <script>
2 var hellword = (function(){
3 console.log(‘hello one‘) ;
4 setTimeout(function(){
5 console.log(‘hello two‘) ;
6 },100) ;
7 setTimeout(function(){
8 console.log(‘hello three‘) ;
9 },0) ;
10 console.log(‘hello four‘) ;
11 }()) ;
12 </script>
执行结果:
hello one
hello four
hello three
hello two
4、下面代码的执行结果
1 <script>
2 var a = {
3 id : 10
4 }
5 b = a ;
6 b.id = 1 ;
7 b.name = ‘test‘ ;
8 console.log(a) ;
9 </script>
执行结果:
id:1
name:test