资讯专栏INFORMATION COLUMN

复习 JavaScript 关键字 this

godiscoder / 2435人阅读

摘要:方法调用当一个函数作为一个对象的属性调用时候下标表达式或者点表达式称之为方法调用,此时指向这个对象。作为构造函数调用的方式称为的构造函数,的过程中构造函数的对象的属性和方法将被加到新对象的属性上。

this

this是js的一个关键字,只能在函数内部使用,在函数运行时候自动生成的内部对象,代表函数运行时候的作用域指向,使用频率极高!

常用的用法与作用域指向

函数调用:js里面规定当一个函数并非某一个对象,直接调用的时候,称之为函数调用,此时this指向全局对象Global。

var t = 1;
function test(){
    console.log(this.t)
}
test() //1

方法调用:当一个函数作为一个对象的属性调用时候([fn]下标表达式或者.fn点表达式)称之为方法调用,此时this指向这个对象。

var t =1;
var obj= {
     t:2,
     test :function(){
         console.log(this.t)
     }
}
obj.test() // 2

作为构造函数调用:var test = new fn() 的方式 称fn为test的构造函数,new的过程中构造函数的this对象的属性和方法将被加到新对象的属性上

    function fn(){
        this.t = 1
    }
    var test = new fn();
    test.t // 1
    //fn的this对象会被加到新生成的test对象上 

4:apply,call,bind方式调用:apply,call,bind都可以改变一个函数运行时候的this指向。

var t = 1
var test = function(){
    console.log(this.t)
}
test() //1
test.call({t:2}) //2
test.apply({t:3})//3
test.bind({t:4})()//4

关于bind的分析,可以看另一篇文章:bind方法分析与实现

看完了上面4种调用方式可以得出一个结论this指向的作用域永远是函数运行时候决定的

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80850.html

相关文章

  • 重新复习js

    摘要:复习基础到底是什么的应用场合极其广泛。常量不可以通过重新赋值改变其值,也不可以在代码运行时重新声明。布尔对象是原始布尔数据类型的一个包装器整数整数可以用十进制基数为十六进制基数为八进制基数为以及二进制基数为表示。 复习js day1 js基础 JavaScript 到底是什么 JavaScript 的应用场合极其广泛。简单到幻灯片、照片库、浮动布局和响应按钮点击。复杂到游戏、2D 和 ...

    xuexiangjys 评论0 收藏0
  • 【重温基础】15.JS对象介绍

    摘要:构造函数通常首字母大写,用于区分普通函数。这种关系常被称为原型链,它解释了为何一个对象会拥有定义在其他对象中的属性和方法。中所有的对象,都有一个属性,指向实例对象的构造函数原型由于是个非标准属性,因此只有和两个浏览器支持,标准方法是。 从这篇文章开始,复习 MDN 中级教程 的内容了,在初级教程中,我和大家分享了一些比较简单基础的知识点,并放在我的 【Cute-JavaScript】系...

    booster 评论0 收藏0
  • 复习javascript中call,apply,bind的用法

    摘要:绑定函数被调用时,也接受预设的参数提供给原函数。一个绑定函数也能使用操作符创建对象这种行为就像把原函数当成构造器。 一直很难理解js中的call apply bind,在w3schools,mdn阅读了,也看了很多相关的文章,今天我来写下我理解的call apply bind 首先创建一个函数 function man(){} man.prototype = { name: ...

    darryrzhong 评论0 收藏0
  • JS函数的一些基础知识

    摘要:为了更好的讲解构造函数原型原型链等,我们需要复习一下函数的一些基础知识。闭包在复习了函数的相关基础知识之后,我们终于可以进入闭包。我们可以这样理解闭包,首先,闭包是一个函数,是一个什么样子的函数呢是一个可以访问另一个函数中变量的函数。 为了更好的讲解构造函数、原型、原型链等,我们需要复习一下函数的一些基础知识。接下来,就让我们一起回味一些JS的基础知识点。 全局变量VS局部变量 简单粗...

    Ashin 评论0 收藏0
  • 复习Javascript专题(三):面向对象(对象的创建与继承,原型及原型链)

    摘要:在创建子类实例时,不能向超类型的构造函数中传递参数。构造函数继承子类传进的值是基本思想是在子类构造函数的内部调用超类或父类型构造函数。继承保证构造函数指针指向如果想同时继承多个,还可使用添加属性的方式类继承, OOP:Object Oriented Programming 面向对象编程。 题外话:面向对象的范围实在太大,先把这些大的东西理解理解。 1.什么是对象? 根据高程和权威指南上...

    testHs 评论0 收藏0

发表评论

0条评论

godiscoder

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<