首页 > 其他分享 >对this对象的理解

对this对象的理解

时间:2023-08-19 21:35:25浏览次数:30  
标签:调用 函数 指向 对象 模式 理解 call

This 是执行上下文中的一个属性,它指向最后一次调用这个方法的对象。在实际开发中,this 的指向可以通过四种调用模式来判断。

  1. 第一种是函数调用模式,当一个函数不是一个对象的属性时,直接作为函数来调用时,this 指向全局对象。
  2. 第二种是方法调用模式,如果一个函数作为一个对象的方法来调用时,this 指向这个对象。
  3. 第三种是构造器调用模式,如果一个函数用 new 调用时,函数执行前会新创建一个对象,this 指向这个新创建的对象。
  4. 第四种是 apply 、 call 和 bind 调用模式,这三个方法都可以显示的指定调用函数的 this 指向。其中 apply 方法接收两个参数:一个是 this 绑定的对象,一个是参数数组。call 方法接收的参数,第一个是 this 绑定的对象,后面的其余参数是传入函数执行的参数。也就是说,在使用 call() 方法时,传递给函数的参数必须逐个列举出来。bind 方法通过传入一个对象,返回一个 this 绑定了传入对象的新函数。这个函数的 this 指向除了使用 new 时会被改变,其他情况下都不会改变。

这四种方式,使用构造器调用模式的优先级最高,然后是 apply、call 和 bind 调用模式,然后是方法调用模式,然后是函数调用模式。

标签:调用,函数,指向,对象,模式,理解,call
From: https://www.cnblogs.com/huwenlong/p/17643147.html

相关文章

  • DTO、对象拷贝——多表查、修改、添加
    问题介绍一:一个分页查询方法,前端页面需要展示菜品信息(dish表),和菜品类型id信息(categoryId),但是菜品类型类中的菜品分类属性字段,菜品表中没有,所以使用DTO类,将两类信息保存到一个DTO类中。1、DishDto类其中该类继承Dish,所以有Dish类中的所有字段属性,本身自带categoryName属性与List......
  • 面向对象编程
    面向对象编程多[多种]态[状态]基本介绍方法或对象具有多种状态,是面向对象的第三大特征多态的具体体现方法的多态对象的多态/*1.一个对象的编译类型和运行类型可以不一致2.编译类型在定义对象时,就确定了,不能改变3.运行类型是可以变化的4.编译类型看定义时=号的左......
  • 面向对象高级01
    面向对象高级一、类变量和类方法1.1类变量和类方法1.1.1static变量是对象共享的,不管static变量在哪里1.1.2共识:(1)static变量是同一个类的对象共享。(2)static变量在类加载的时候就已经生成了1.1.3什么是类变量?类变量也叫静态变量,是该类的所有对象共享的变量,任何一个该类的......
  • OOP:面向对象
    OOP:面向对象思想80年代,百花争名,OOP(面向对象编程)OOA(面向对象分析)OOD(面向对象设计)程序即现实:模拟现实世界万事万物皆对象核心:类和对象类是对象的抽象,对象是类的具体类:抽象的,模板,概念,是一些具体共同特征和行为的一类的定义对象:实际存在的,通过类来创建类的组成:属性(......
  • new对象时内部做了什么?
    1.创建一个新对象;2.该对象执行[[Prototype]](即__proto__)链接;3.将构造函数的作用域赋值给新对象(this指向该新对象);4.执行构造函数中的代码(给该对象添加属性、方法);5.若无显式返回对象或函数,才返回新对象。 functionnewFn(fn,...args){//1.创建一个新对象......
  • JAVA 中的方法是对象吗?
    在Java中,方法(Method)不是对象本身,但它们与对象之间存在密切的关系。为了理解这个关系,我们需要了解Java中的方法和对象的概念以及它们之间的交互。方法(Method):方法是Java中执行特定任务的代码块。它是面向对象编程的核心概念之一,用于封装可重复使用的代码。在Java中,每个方法都属于一个......
  • C#面向对象的三大特征
    一、封装封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类或者对象隐藏信息。简单地说,一个类就是一个封装了数据及操作这些数据的代码的逻辑实体。目的是增强程序的安全性、简化编程、代码的重用性更高,让修改或扩展更方便。......
  • 面向对象开发的封装
    封装被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象。封装使用 访问修饰符 来实现。一个 访问......
  • JavaScript中的析构对象,析构数组与展开运算符
    前言这些是JavaScript中重要的编程思想,这些析构对象,析构函数与展开运算符很重要这块内容不怎么难,纯属一些语法,但是在所谓的函数式编程,以及React中却是广泛使用的逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内容!!逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内......
  • 剖析MongoDB数据库:理解NoSQL设计模式、优化查询性能和数据安全性
    MongoDB是一个流行的NoSQL文档数据库,它使用JSON样式的文档存储数据。本文将对MongoDB进行剖析,包括NoSQL设计模式、优化查询性能和数据安全性。NoSQL设计模式文档数据库MongoDB采用文档数据库的设计模式,即将相关数据保存在单个文档中,而不是将其拆分成多个表。这种设计模式使得数......