美文网首页
This的指向总结

This的指向总结

作者: Simon_s | 来源:发表于2016-10-10 21:27 被阅读109次

1、//定时器中this的指向

/*var a = 23;
function Demo() {
this.a = 12;
//var self = this;
setInterval(this.show, 1000);
}

Demo.prototype.show = function() {
alert(this.a);
};


var demo = new Demo();
demo.show();*/

setInterval(function() {
console.log(this);
}, 1000);

结论:如果由定时器调用执行了某个函数,函数中有this,则这个this指向window

2、普通函数中this的指向

//定义一个普通函数
function fun1(){
alert(this)
}
//调用普通函数时,this的指向就是window
//这种定义方法实际就是window.fun1 = funciton(){}

//定义一个全局变量其实就是给window对象加了一个属性
var name = "dfdf";
function obj(){
var name = "dfdfss"
console.log(this)
//如果window对象有name则打印name的值,否则打印为空
console.log(this.name)
}
obj();

var obj1 = {
name:"ddd",
sayName:function(){
    console.log(this.name);
}
}

obj1.sayName();

总结:this在函数中的指向,谁调用的这个函数,函数中的this就指向谁

3、事件函数中this的指向

// 获取到第一个按钮
//          var btn1 = document.getElementsByClassName('btn1')[0];
    
//          console.log(btn1);
//          btn1.onclick = function () {
//              console.log(this);
//          }

当this出现在事件函数中时,this就指向触发这个事件的标签

        for (var i = 1; i < 4; i++) {
            var btn = document.getElementsByClassName('btn'+i)[0];
            btn.onclick = function () {
                console.log(this);
            }
        }

4、构造函数中this的指向

function CreatPerson () {
this.name = "李威";
console.log(this);
console.log(this.name);
}

// 构造函数中的this指向了创建出的对象
// 为什么this指向的是对象?
// new关键字会在内存中开辟一块空间,这个空间在设置好值后会把地址交给per1这个变 
  量,所以per1就是创建出来的对象的“代言人”,而空间中存在的“this”也就指向了per1
var per1 = new CreatPerson();

5、call修改函数中this的指向

// call是function数据类型提供的一种方法:修改被调函数内部指针的指向。
        
        
//          var name = "刘孟瑾";
//          var liWei = {
//              name: "李威"
//          };
        
//          var wangLiYuan = {
//              name: "王丽媛"
//          };
        
//          function getName (age) {
//              alert(age);
//          };
6、getName(); // 普通函数调用,this指向的是window
//          getName.call(wangLiYuan);

//          getName.apply(wangLiYuan);
        
//          getName.apply(null, [12]);

7、call和apply的作用和用法完全一样。只是在传递参数时,call把所需要的函数参

    数依次列举出来;而apply需要把函数参数包装进一个数组中传递;
    
        window.onload = function () {
            var btn = document.getElementById('btn');
            btn.onclick = function () {
                console.log(this);
                function inner () {
                    console.log(this);
                }
                
                inner.call(this);
            }
        }

相关文章

  • This的指向总结

    1、//定时器中this的指向 结论:如果由定时器调用执行了某个函数,函数中有this,则这个this指向wind...

  • this指向总结

    1. 作为对象的方法调用 this指向该对象 2.当作为普通函数调用 this指向全局对象在浏览器js中,全局对象...

  • this指向总结

    全局环境下 在全局环境下,this 始终指向全局对象(window), 无论是否严格模式; 函数上下文调用 函数直...

  • This指向总结

    函数调用 普通调用:this指向Window(在严格模式下,this指向undefined) 宽松模式image....

  • this指向总结

    总结: 纯粹的函数调用:指向全局 作为对象方法的调用:指向对象(调用者) 构造函数调用:构造函数中的this指向n...

  • this指向总结

    1.简述this的指向问题 关于this的指向,记住最核心的一句话:哪个对象调用函数,函数里面的this指向哪个对...

  • OC基础-isa(4)

    isa,superClass总结先上图 总结:a.instance的isa指向classb.class的isa指向...

  • 关于this指向的总结

    分析下面的代码指向,注意都是在非严格模式下面的指向 如果是在浏览器环境下调用,指向全局对象window, 如果在n...

  • js的this指向总结

    this对象 js严格模式下没有window 一、普通函数 非严格模式 普通函数全局调用和局部调用都是指向wind...

  • JavaScript this指向总结

    JS中this的指向有些复杂,分为较多种的情况。此外,在严格模式和非严格模式之间也会有一些差别。 注:node环境...

网友评论

      本文标题:This的指向总结

      本文链接:https://www.haomeiwen.com/subject/ihyvyttx.html