首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么bind()不适用于对象内部的另一个函数?

bind()方法是JavaScript中用于改变函数执行上下文的方法。它创建一个新函数,将指定的对象绑定为新函数的执行上下文,并返回这个新函数。

在对象内部的另一个函数中使用bind()方法是不适用的,原因如下:

  1. bind()方法是用于改变函数的执行上下文,将函数绑定到指定的对象上。而在对象内部的另一个函数中,函数已经是对象的一部分,执行上下文已经是该对象,不需要再使用bind()方法来改变执行上下文。
  2. 对象内部的函数可以直接访问对象的属性和方法,不需要通过bind()方法来绑定执行上下文。在对象内部,函数可以使用this关键字来引用当前对象,通过this可以访问对象的属性和方法。
  3. 使用bind()方法会创建一个新函数,而在对象内部的另一个函数中,我们通常希望直接使用原始函数,而不是创建一个新函数。

综上所述,bind()方法不适用于对象内部的另一个函数,因为在对象内部的函数中,函数已经是对象的一部分,可以直接访问对象的属性和方法,不需要改变执行上下文。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++ this指针:用于在成员函数中指向调用该函数对象

C++中this指针是一个指向当前对象指针。在成员函数中,可以使用this指针来访问调用该函数对象成员变量和成员函数。...一、定义和使用this指针 this指针是在成员函数内部定义一个常量指针。它存储了当前对象地址,可以通过它访问当前对象成员变量和成员函数。...,返回是指向调用该函数对象指针。...这里使用了*this来访问调用该函数对象。 三、作为函数参数this指针 this指针也可以作为函数参数传递。这种情况下,可以在函数内部访问其他对象成员变量和成员函数。...在getName函数内部,使用了this指针访问调用该函数对象成员变量name。

24140
  • MoCo不适用于目标检测?MSRA提出对象级对比学习目标检测预训练方法SoCo!性能SOTA!(NeurIPS 2021)

    本文目标是开发与目标检测相一致自监督预训练。在目标检测中,检测框用于对象表示。目标检测平移和尺度不变性由边界框位置和大小来反映。...基于此,作者提出了一个对象级自监督预训练框架,称为选择性对象对比学习(Selective Object COntrastive learning, SoCo),专门用于目标检测下游任务 。...不同于先前图像级对比学习方法,将整张图片作为作为一个实例,SoCo将图像中每个对象proposal视为一个独立实例。 因此,作者设计了一个新预训练任务,用于学习与目标检测兼容对象级视觉表示。...使用分别表示对象级特征潜在嵌入: 第个对象proposal对比损失定义如下: 然后,每个图像损失函数为: 其中是对象proposal数量。...最后总损失函数为: Scale-Aware Assignment 带有FPNMask R-CNN使用Anchor和Ground Truth box之间IoU来确定正样本。

    1.5K40

    啊,函数呐!!!

    所以说函数是第一类型对象函数是代码执行主要模块单元化 函数包含一组语句,用来指定对象某一种行为,是JavaScript基础模块单元,用于代码复用,信息隐藏和组合调用; 所谓编程,就是将一组需求分解成一组函数与数据结构技能...}; console.log(sarural1.chirp(4)); var ninja1={}; console.log(sarural1.chirp(4));//24 复制代码 我们在函数内部不适用匿名函数就能解决问题啦...():在一个对象上下文中应用另一个对象方法;参数能够以数组形式传入。...Function.prototype.call() :在一个对象上下文中应用另一个对象方法;参数能够以列表形式传入。...这个新对象被执行[[Prototype]]链接 这个新对象绑定到函数调用this 如果函数没有返回其他对象,那么new表达式中函数会自动返回这个新对象 apply(),call(),bind()调用模式

    83421

    一劳永逸地搞懂 JavaScript中‘this’

    简单地说,全局上下文是默认、顶级环境,当你代码不在任何函数对象内部时,它就位于这个环境中。那么,在这里 this 是如何表现呢?...当涉及到这些函数内部“this”行为时,事情可能会变得有点棘手。 基本行为: 在其核心,常规函数内部 this 值是由如何调用该函数(其调用上下文)来确定。...因此,sayName 内部 this 指的是 obj。 特殊情况 使用call、apply和bind: 这些是允许你直接设置 this 应该引用什么方法,而不考虑函数如何或在哪里被调用。...理解常规函数内部this行为都是关于上下文。它是关于知道在调用时哪个对象“拥有”函数。这种洞察可以防止无数错误和挫败感,尤其是当你JavaScript项目在复杂性上增长时。...它们不适用于箭头函数

    12310

    前端开发之彻底搞懂this指向

    显示绑定 隐式绑定有一个前提条件: 必须在调用对象内部有一个对函数引用(比如一个属性); 如果没有这样引用,在进行调用时,会报找不到该函数错误; 正是通过这个引用,间接将this绑定到了这个对象上...; 如果我们不希望在 对象内部 包含这个函数引用,同时又希望在这个对象上进行强制调用,该怎么做呢?...123 2.3.2. bind函数 如果我们希望一个函数总是显示绑定到一个对象上,可以怎么做呢?...这个和setTimeout源码内部调用有关; setTimeout内部是通过apply进行绑定this对象,并且绑定是全局对象; 案例二:数组forEach 数组有一个高阶函数forEach,用于函数遍历.../ window // foo2依然是箭头函数不适用于显示绑定规则 person1.foo2.call(person2) // window // 获取到foo3,但是调用位置是全局作用于下,所以是默认绑定

    74320

    普通函数和箭头函数区别

    下面栗子中在一个函数中定义箭头函数,然后在另一个函数中执行箭头函数。...此属性主要:用于确定构造函数是否为new调用。...[1,2,3].map(x => x * x); // 箭头函数只需要一行 箭头函数注意事项及不适用场景 箭头函数注意事项 一条语句返回对象字面量,需要加括号,或者直接写成多条语句return...这时候因为没有在普通函数内部进行定义,所以this会指向其他普通函数,或者全局对象上,导致bug!...,普通函数函数参数支持重命名 箭头函数相对于普通函数语法更简洁优雅 箭头函数注意事项及不适用场景 箭头函数注意事项: 箭头函数一条语句返回对象字面量,需要加括号 箭头函数在参数和箭头之间不能换行

    85030

    Valine – 自定义表情包(多组)

    Valine.js v1.4.3 版本已于4月11日更新后支持表情包 Valine 自带表情组是一个数组对象,那我们就从这个入手; 自定义内容需要了解部分基础 js 操作 注意,以下思路可能并不适用于...首先定位到 e.exports ,进行emoji表情自定义修改(将对象改为普通数组,该数组数量会与第二个表情包数量同步) 删除原有 {key:value} 对象, 添加表情包数组 [key](数量自定义...) 定位到 r.prototype.bind = function(e) , 添加切换按钮 ii,添加初始变量 ESwitch (用于判断 ESwitch 值来进行表情包切换) 在原有默认表情下(r)...() , 添加额外点击调用函数 t.semoji 调用内部,通过点击时判断一个调用(r)也就是默认i标签,另一个调用(rs)也就是自定义img标签 定位到 u.on("click", i,function...(e) { 绑定点击事件(对应点击调用函数) 其实上面瞎扯那么多我自己都不知道在说啥了哈哈哈,很乱因为我搞时候不清晰也没规律,都是有想法了之后瞎搞搞。。

    10910

    18Function类型

    this - 指定this值,表示当前调用函数对象 * 如果不适用this值时,提供默认为null或者undefined值 * args - 数组,用于接收指定函数实参...()方法 Functionbind()方法用于创建一个新函数(称为绑定函数),井且接收指定this值作为参数,以及参数列表。...如果在外部需要释放函数,那么函数内部自调应该改为arguments.callee()。...因此匿名函数用法有两个 回调函数 将一个函数作为另一个函数参数使用,作为参数函数称为回调函数 自调函数 函数调用自身(定义即调用函数) 回调函数 将一个函数作为另一个函数参数使用,作为参数函数称为回调函数...作用 用于执行一次性逻辑任务 应用 作为整体逻辑代码外层结构 作为值函数函数函数体中定义另一个函数 -> 内容(私有)函数 // 作为值函数 function fn() { //在函数函数体中定义另一个函数

    56410

    论普通函数和箭头函数区别以及箭头函数注意事项、不适用场景

    箭头函数this指向在定义时候继承自外层第一个普通函数this。 下面栗子中在一个函数中定义箭头函数,然后在另一个函数中执行箭头函数。...此属性主要:用于确定构造函数是否为new调用。...x * x; }); // 普通函数写法 [1,2,3].map(x => x * x); // 箭头函数只需要一行 --- 箭头函数注意事项及不适用场景 箭头函数注意事项 一条语句返回对象字面量...这时候因为没有在普通函数内部进行定义,所以this会指向其他普通函数,或者全局对象上,导致bug!...,普通函数函数参数支持重命名 箭头函数相对于普通函数语法更简洁优雅 箭头函数注意事项及不适用场景 箭头函数注意事项: 箭头函数一条语句返回对象字面量,需要加括号 箭头函数在参数和箭头之间不能换行

    1.6K00

    JavaScript中thiscallapplybind

    test函数被new关键词调用时,内部依次执行了以下步骤: (1)创建一个空对象。 (2)将这个空对象原型,指向这个构造函数prototype。...(3)将空对象值赋给函数内部this(this就是个空对象了)。 (4)执行函数体代码,为this这个对象绑定键值对。 (5)返回this,将其作为new关键词调用oop函数返回值。...也就是说,箭头函数内部与其外部this是保持一致。...二、Function.prototype.bind() bind()方法主要就是将函数绑定到某个对象bind()会创建一个函数函数体内this对象值会被绑定到传入bind()中第一个参数值,...obj指定对象,如果没有提供obj参数,那么Global对象用于obj。

    47210

    是否还在疑惑Vue.js中组件data为什么函数类型而不是对象类型

    一般我们会以组件化思想去开发(别担心,马上讲解什么是组件化思想),所以我们还会用到Vue实例对象另一个属性components去注册别的组件。...李四 这时我们延续上面的例子,我们再在另一个页面注册一下该组件,这时有会调用函数Vue,创建一个实例对象 //又创建了一个Vue实例,会调用上面的定义函数 let vm2 = new...}} //会渲染成李四 我们在将该组件注册到另一个页面上,此时会创建一个实例对象vm2 function Vue() { //此处data值为一个对象 this.data...因为我们刚开始定义了构造函数Vue时,给他内部data设置了一个值,该值为对象类型,对象类型在js中称为引用数据类型,在栈中是存储着一个指向内存中该对象堆中地址。...'55'},所以当我们改变其中一个实例对象data.name时,其实是先顺着地址去找到内存中那个对象,然后改变一些值,但是因为所有创建实例都是按照地址去寻找值,所以其中一个改变,另一个也跟着改变啦

    3.4K30

    java内部类以及为什么要用public static void修饰main()函数,String args[]是什么?(浅显一些探索)

    java内部类和外部类,以及main方法一些探索 内部类 成员内部类 局部内部类 匿名内部类 main方法一些疑问 为什么main方法要用static修饰 为什么需要public 修饰符?...为什么需要void修饰? 为什么main方法里面的参数是(String[] args)(一个字符串数组?) 内部类 成员内部类 成员内部类就是定义在一个类内部,其实是相当于成员变量位置。...2:非静态成员内部类成员不能被外部直接访问,不能只通过实例外部类访问内部类成员 3:访问非静态成员内部类成员属性可以通过外部类实例对象.new 内部类, 示例如下 // An highlighted...先给一个不适用匿名内部类实现例子 package java_practice; interface Demo_{ void demo_d(); } class Demo_im implements...对比c,c++,的话,我们就好奇,为什么c,c++就可以进行返回,int main(),执行机制不一样啊,c,c++在程序进入函数执行是偶,会启动运行时库,然后初始化环境,启动入口函数,然后程序进行执行

    24520

    std和boostfunction与bind实现剖析

    图1: bind_t 内存结构 bind_t里包含了两个成员,一个用于存可调用仿函数functor,另一个用于保存执行bind函数时传入参数列表list。...仿函数functor部分用于保存可调用操作。...如果bind操作传入直接是一个仿函数,那么这个functor就直接是这个仿函数了;但是如果是普通函数或者成员函数,则会提供一个内定仿函数内部记录这个函数指针。...参数列表list部分则是直接保存了bind函数传入参数。如果functor是一个成员函数的话,list至少要有一个,并且这个参数用于保存调用对象。...然后是function对象 function对象也上是有几个疑问点: function对象是固定大小、固定类型,如何关联多种对象函数? 复制function时,为什么会导致其关联对象也复制?

    1.1K30

    【Chromium中文文档】线程

    注意异步/平行 IO是可以另一个需要注意事情是,不要在一个线程里阻塞另一个线程。锁只能用于交换多线程访问共享数据。...生成base::Callback类型依赖于传入参数。为什么不直接传入函数指针呢?...base::Bind()和类方法 base::Bind() API也支持调用类方法。语法与在一个函数里调用base::Bind()类似,除了第一个参数必须是这个方法所属对象。...默认情况下,PostTask使用对象必须是一个线程安全引用计数对象。引用计数保证了另一个线程调用对象必须在线程完成前保活。...base::Bind()怎么处理参数 传给base::Bind()参数会被复制到一个内部InvokerStorage结构对象(定义在base/bind_internal.h中)。

    4K60

    std和boostfunction与bind实现剖析

    [](p938_01.png) 图1: bind_t 内存结构 bind_t里包含了两个成员,一个用于存可调用仿函数functor,另一个用于保存执行bind函数时传入参数列表list。...仿函数functor部分用于保存可调用操作。...如果bind操作传入直接是一个仿函数,那么这个functor就直接是这个仿函数了;但是如果是普通函数或者成员函数,则会提供一个内定仿函数内部记录这个函数指针。...参数列表list部分则是直接保存了bind函数传入参数。如果functor是一个成员函数的话,list至少要有一个,并且这个参数用于保存调用对象。...复制function时,为什么会导致其关联对象也复制? 调用时如何区分成员函数、非成员函数、虚函数和仿函数

    1.8K10

    javascript基础修炼(3)—Whats this(下)

    IronMan这个标识符指向对象信息并不能在运行时找到fly( )这个方法位置,因为ability属性中只存了另一个对象引用地址,而IronMan.ability对象fly属性所记录指向,才能让引擎在运行时找到这个匿名方法...回调函数 javascript中函数是可以被当做参数传递进另一个函数,也就有了回调函数这样一个概念。...五. this指针丢失 在第三节和第四节中,通过原理分析就能够明白为何在一些特定场合下this会指向全局对象,但是从语言角度来看,却很难理解this为什么指向了全局对象,因为这个规则和语法字面意思是有冲突...通过addEventListener方法注册 这种方式是在DOM2事件模型中扩展用于支持多个监听器绑定场景。...思考题— React组件中为什么bind(this) 如果你尝试使用过React进行前端开发,一定见过下面这样代码: //假想定义一个ToggleButton开关组件 class ToggleButton

    88420

    框架篇-Vue面试题1-为什么 vue 组件中 data 是函数而不是对象

    在vue组件中data属性值是函数,如下所示 export default { data() { // data是一个函数,data: function() {}简写 return...// data是一个对象 name: 'itclanCoder', }, }; 当一个组件被定义,data必须声明为返回一个初始数据对象函数,因为组件可能被用来创建多个实例 也就是说,在很多页面中...,定义组件可以复用在多个页面 如果data是一个纯碎对象,则所有的实例将共享引用同一份data数据对象,无论在哪个组件实例中修改data,都会影响到所有的组件实例 如果data是函数,每次创建一个新实例后...,调用data函数,从而返回初始数据一个全新副本数据对象 这样每复用一次组件,会返回一份新data数据,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例各自独立,互不影响,保持低耦合 可以看下面一段代码...,实例化出来对象(p1,p2)都指向是同一份实体 原型下属性相当于是公有的 修改一个实例对象属性,也会造成另一个实例属性跟着改变,这样在组件复用时候,肯定是不行,那么改成函数就可以了,如下代码所示

    1.9K20
    领券