博客
关于我
Javascript理解this对象
阅读量:422 次
发布时间:2019-03-06

本文共 1209 字,大约阅读时间需要 4 分钟。

JavaScript中this对象的理解

在JavaScript中,this对象是一个非常重要且具有灵活性的概念。它的行为取决于函数被如何调用。以下是通过多个例子的解析,帮助你更好地理解this对象的作用。

1. 函数调用时的this

当函数被作为普通函数调用时,this的值取决于调用函数的上下文。例如:

var name = 'Jenny';function person() {    return this.name;}console.log(person()); // Jenny

在全局作用域中调用person(),此时的调用对象是window,因此this指向windowwindow.name等于Jenny

2. 对象方法调用时的this

当函数作为对象的方法被调用时,this对象会指向该对象本身。例如:

var name = 'Jenny';var obj = {    name: 'Danny',    person: function() {        return this.name;    }};console.log(obj.person()); // Danny

在这个例子中,person()函数是obj对象的方法,调用时this指向obj,因此this.name等于Danny

3. 构造函数调用时的this

当使用new关键字调用构造函数时,this对象会指向构造函数创建的新实例。例如:

function person() {    return new person.prototype.init();}person.prototype = {    init: function() {        return this.name;    },    name: 'Brain'};console.log(person().name); // undefined

在这个例子中,person()被调用,返回一个实例athis指向aa.nameinit函数中返回this.name,但name属性定义在person的原型上,因此结果为undefined

4. apply()call()方法

apply()call()方法可以改变this对象的值。例如:

function person() {    return this.name;}var obj = {    name: 'Jenny',    age: 18};console.log(person.apply(obj)); // Jenny

通过apply(obj)person()函数的this对象被设置为obj,因此this.name等于Jenny

通过以上例子可以看出,this对象的值取决于函数被如何调用。理解这一点对于编写更灵活和高效的JavaScript代码至关重要。

转载地址:http://fzsuz.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>