哥要学前端!!饥人谷技术博客

this

2016-12-15  本文已影响208人  GarenWang

简答题

1.apply、call 有什么作用,什么区别

    fn.call(context,param1,param2,...)
    fn.apply(context,paramArray)

代码题

1.以下代码输出什么?

 var john = {
   firstName: "John"
   }
 function func() {
     console.log(this.firstName + ": hi!")
   } 
john.sayHi = func
john.sayHi()

结果输出:"John: hi!",分析如下:

    john.sayHi = func 
    //使John对象变为了
    var john= {
        firstName:'John',
        sayHi:func
    }
    //这里对象john调用的func函数,这里this就是对象john。
    john.sayHi() //输出结果为:"John:hi!"

2. 以下代码的输出结果

func() //弹出:[object Window]

    function func() { 
      alert(this)//this默认情况下为全局对象window
    }

3. 以下代码的输出结果

  function fn0(){
        function fn(){
            console.log(this);  //window
        }
        fn();
    }

    fn0(); 

    document.addEventListener('click', function(e){
        console.log(this);  //#Document
        setTimeout(function(){
            console.log(this);  //window
        }, 200);
    }, false);

4下面代码输出什么,why

    var john = { 
      firstName: "John" 
    }

    function func() { 
      alert( this.firstName )
    }
    func.call(john) //输出结果为john

5下面代码输出什么,why

  var john = { 
      firstName: "John",
      surname: "Smith"
    }

    function func(a, b) { 
      alert( this[a] + ' ' + this[b] )
    }
    func.call(john, 'firstName', 'surname') //"John Smith"

6以下代码有什么问题,如何修改

var module= {
      bind: function(){
        $btn.on('click', function(){
          console.log(this) //this指什么,指的是$btn
          this.showMsg();
        })
      },
      
      showMsg: function(){
        console.log('饥人谷');
      }
    }

方法2
//利用变量储存当前的this的值
var module= {
bind: function(){
var cur=this;
$btn.on('click', function(){
console.log(this) //this指什么,指的是$btn
cur.showMsg();
})
},

      showMsg: function(){
        console.log('饥人谷');
      }
    }

7 下面代码的输出结果

  var length = 3;
    function fa() {
      console.log(this.length);
    }
    var obj = {
      length: 2,
      doSome: function (fn) {
        fn();
        arguments[0]();
      }
    }
    obj.doSome(fa)//输出结果为3,1

版权为饥人谷和作者所有,若转载请注明出处

上一篇 下一篇

猜你喜欢

热点阅读