美文网首页
JavaScript 中的 this

JavaScript 中的 this

作者: 凸小布 | 来源:发表于2017-03-03 20:30 被阅读5次

前言:this指向的是一个对象,具体指向的是哪个对象由函数调用方式来决定。

为什么要使用this?

答案:在调用函数的时候可以少传一个参数,是代码更灵活,复用性更好

    var obj01 = {name : "小白"};
    var obj02 = {name : "小黑"};

    function showName(){
        console.log(this.name);
    }

    obj01.showName = showName;
    obj02.showName = showName;

    obj01.showName();
    obj02.showName();

this到底指向谁呢?具体由函数的调用方式来决定

  • 001 以普通函数的方式来调用,在非严格模式下,指向window,在严格模式下,指向undefined
  • 002 以对象的方法来调用,this指向调用方法的对象
  • 003 以构造函数的方式来调用,this指向的是构造函数内部新创建的对象
  • 004 以上下文的方式来调用(call | apply),this指向第一个参数
demo1 以普通函数的方式来调用,在非严格模式下,指向window,在严格模式下,指向undefined
<script>
    "use strict";

    function foo(){
        console.log(this);
    }
    foo();
</script>
demo2 以对象的方法来调用,this指向调用方法的对象
<script>
    var obj = {
        name : "小白",
        showName : function(){
            console.log(this);
            console.log(this.name);
        }
    }

    obj.showName();
</script>
demo3 以构造函数的方式来调用,this指向的是构造函数内部新创建的对象
<script>
    function Foo(){
        this.name = "默认";
        this.age = 18;
        this.showName = function(){
            console.log(this);
            console.log(this.name + ' -' + this.age);
        }
    }

    var foo = new Foo();
    foo.showName();
</script>
demo4 以上下文的方式来调用(call | apply),this指向第一个参数
<script>
    var obj1 = {
        name : "默认",
        sayHi : function(){
            console.log(this.name + '在 say Hi~');
        }
    };

    var obj2 = {
        name : "小白"
    }

    obj1.sayHi.call(obj2); //小白在 say Hi~
</script>

相关文章

  • 1body中添加js

    1 中的 JavaScript JavaScript 函数和事件上面例子中的 JavaScript 语句,会...

  • JS中的类型转换

    JavaScript 中的类型转换 JavaScript 基本数据类型 JavaScript 中的一共有 8 中内...

  • js中的this

    javascript中的this javascript中的this与java中的this有点不同。ECMAScri...

  • JavaScript中的字符串

    @(javascript)[js字符串][toc] JavaScript中的字符串 字符串是JavaScript中...

  • 06-JavaScript数组和函数

    JavaScript数组 JavaScript中的数组可以存储不同类型的数据 JavaScript中的数组是引用类...

  • Client's JavaScript

    什么是JavaScript? JavaScript的运行环境? 浏览器中JavaScript可以做什么? 浏览器中...

  • javascript中的this

    一般说到JS的this,都会想起在函数中变来变去的this。但是事情的发生都是有规则的约束,JS中的this也不例...

  • JavaScript中的this

    什么是this? 首先对this的下个定义:this是在执行上下文创建时确定的一个在执行过程中不可更改的变量。th...

  • JavaScript中的this

    JavaScript中的this很容易让人迷惑,但弄清楚后其实还是很好区分的。JavaScript中的this总是...

  • javascript中的this

    在javascript中的this大致可以理解成谁调用的this就指向谁 全局环境中的this 函数中的this ...

网友评论

      本文标题:JavaScript 中的 this

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