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

在不使用箭头函数的情况下获取函数内的主类对象

,可以通过以下步骤实现:

  1. 首先,需要在函数内部创建一个指向主类对象的变量。这可以通过在函数内部使用this关键字来实现。this关键字在函数内部指向调用该函数的对象。
  2. 接下来,可以使用bind()方法将函数绑定到主类对象上。bind()方法会创建一个新的函数,该函数的this值被设置为传入的参数。在这种情况下,将主类对象作为参数传递给bind()方法,以确保函数内部的this指向主类对象。
  3. 最后,可以调用绑定后的函数来获取主类对象。这将返回一个函数,可以像调用普通函数一样调用它,以获取主类对象。

以下是一个示例代码:

代码语言:javascript
复制
function MyClass() {
  this.name = "MyClass";
  
  this.getMainObject = function() {
    var self = this; // 创建指向主类对象的变量
    var getMainObjectFunc = function() {
      return self; // 返回主类对象
    }.bind(this); // 将函数绑定到主类对象上
    return getMainObjectFunc(); // 调用绑定后的函数获取主类对象
  };
}

var myObj = new MyClass();
var mainObj = myObj.getMainObject();
console.log(mainObj); // 输出主类对象

这样,通过以上步骤,可以在不使用箭头函数的情况下获取函数内的主类对象。

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

相关·内容

_成员函数可以访问本类对象私有成员

成员函数可以访问本类对象私有成员 sList是一个 私有成员是head,有一个成员函数形参是本类对象(引用,引不引用不影响结论和原因) ==为什么呢!...对象b是sList,而这个intersection函数是sList成员函数 head虽然是sList对象私有成员,但是是sList访问 ==就是 访问了本类(实例化对象)私有成员...因为这是访问,又不是外== 这说明了,成员访问权限,是对于====而言,决定在====外是否可被访问 而非对于对象来说(因为对象不同但是都是属于同一种实例化对象成员,...本来就是成员,只是抽象和实例化问题 这非常合理地体现了 封装性 这个就是不行外访问了 这一点是非常好用,可以利用这一点 ==用成员函数肆无忌惮地访问对象私有成员!...==只要声明函数成员函数,将外部同类对象设为形参(或加个引用)就可以了!! 不必再为如何访问到同类外部对象私有成员而苦思了!

85530
  • 分享一个关于this对象编程小技巧,如何使用箭头函数避免this对象混淆?

    为什么使用箭头可以呢? 四 因为箭头函数中,this对象与封闭词法环境中this保持一致。换一句话,箭头函数this,是定义与执行它函数中this对象。...或者我们可以理解为,箭头函数是没有this对象箭头函数this,取决于它身处何处。 那么,回顾一下,this是什么?...考虑一种特殊情况,那么全局作用作用域下,this指代谁呢? 全局作用域下this指代全局对象 如果函数是全局函数,是全局使用域中调用,那么this等于全局对象。...apply与call使用方法是类型,也是第一个参数地方传递this对象;不同处在于bind只绑定执行,而后两者是马上执行。...但在大多数情况下,我们使用不捆绑this箭头函数,来避免this对象混淆问题,是最简单省事方法。 11月7日

    1.1K41

    【Kotlin】:: 双冒号操作符详解 ( 获取引用 | 获取对象类型引用 | 获取函数引用 | 获取属性引用 | Java 中 Class 与 Kotlin 中 KClass )

    文章目录 一、:: 双冒号操作符 1、获取引用 引用类型 KClass 说明 2、获取对象类型引用 3、获取函数引用 4、获取属性引用 二、 java.lang.Class 与 kotlin.reflect.KClass...一、:: 双冒号操作符 ---- Kotlin 中 , :: 双冒号操作符 作用是 获取 , 对象 , 函数 , 属性 类型对象 引用 ; 获取这些引用 , 并不常用 , 都是 Kotlin...1、获取引用 Kotlin 中 , 使用 :: 双冒号操作符 获取 类型对象引用 代码格式为 : Java或Kotlin名::class 获取 Kotlin 类型对象 类型...} 2、获取对象类型引用 Kotlin 中 , 使用 :: 双冒号操作符 获取 对象类型引用 代码格式为 : Java或Kotlin实例对象::class 获取 对象类型引用 类型 为 KClass...相对是 Java 中 Class , 是 Java 中 引用类型 ; Java 语言中 , 需要通过 名.class 获取 Class 实例对象 ; Kotlin 语言中 ,

    4.7K11

    从零开始学C++之对象使用(一):static 成员变量、static 成员函数对象大小

    非static数据成员存在于类型每个对象中,static数据成员独立该类任意对象存在,它是与关联对象,不与对象关联。...(1)、static成员定义 static成员需要在定义体外进行初始化与定义 (2)、特殊整型static const成员 整型static const成员可以定义体中初始化,...:     const int a;   //只能在构造函数初始化列表中初始化     static int b;    //实现文件中定义并初始化     const static int c;...二、static 成员函数 static成员函数没有隐含this指针 非静态成员函数可以访问静态成员 静态成员函数不可以访问非静态成员(实际上是直接访问是不可以,间接地访问是可以,比如通过指针或引用...endl;     return 0; } 三、/对象大小计算 大小计算遵循前面学过结构体对齐原则(参照这里) 大小与数据成员有关与成员函数无关(空大小为1个字节) 大小与静态数据成员无关

    1.2K00

    【C++】继承 ⑥ ( 继承中构造函数和析构函数 | 类型兼容性原则 | 父指针 指向 子类对象 | 使用 子类对象 为 父对象 进行初始化 )

    地方 , 都可以使用 " 公有继承 " 派生 ( 子类 ) 对象 替代 , 该 派生 ( 子类 ) 得到了 除 构造函数 和 析构函数 之外 所有 成员变量 和 成员方法 ; 功能完整性 :..." 公有继承 " 派生 ( 子类 ) 本质上 具有 基 ( 父 ) 完整功能 , 使用 可以解决问题 , 使用 公有继承派生 都能解决 ; 特别注意 : " 保护继承 " 和..." 私有继承 " 派生 , 是 不具有 基 完整功能 , 因为 最终继承 后派生 , 无法 外部调用 父 公有成员 和 保护成员 ; 2、类型兼容性原则应用场景 " 类型兼容性原则..." 应用场景 : 直接使用 : 使用 子类对象 作为 父对象 使用 ; 赋值 : 将 子类对象 赋值给 父对象 ; 初始化 : 使用 子类对象 为 父对象 初始化 ; 指针 : 父指针 指向...子类对象 , 父指针 值为 子类对象 堆内存 地址 , 也就是 将 子类对象 地址 赋值给 父类型指针 ; 引用 : 父引用 引用 子类对象 , 将 子类对象 赋值给 父类型引用 ; 二

    28520

    React useEffect中使用事件监听回调函数中state更新问题

    很多React开发者都遇到过useEffect中使用事件监听回调函数获取到旧state值问题,也都知道如何去解决。...对象类似于按钮btn refApp函数类似React App纯函数组件每次state变化,React 函数会重新执行,所以我们可以进行如下模拟操作图片这个示例运行过程就比较好理解,第一次执行App函数...,初始化数据,Obj可以获取函数a变量,因此,变量a所分配内存不会释放,再运行App函数,Obj获取变量a始终是第一次初始化时a在内存中指向值。...React函数中也是一样情况,某一个对象监听事件回调函数,这个对象相当于全局作用域变量(或者与函数同一层作用域链),回调函数获取state值,为第一次运行时内存中state值。...而组件函数普通函数,每次运行组件函数中,普通函数与state作用域链为同一层,所以会拿到最新state值。

    10.8K60

    【C++】构造函数分类 ② ( 不同内存中创建实例对象 | 栈内存中创建实例对象 | new 关键字创建对象 )

    一、不同内存中创建实例对象 1、栈内存中创建实例对象 在上一篇博客 【C++】构造函数分类 ① ( 构造函数分类简介 | 无参构造函数 | 有参构造函数 | 拷贝构造函数 | 代码示例 - 三种类型构造函数定义与调用..., 会自动将栈内存中实例对象销毁 ; 栈内存中 调用 构造函数 创建 实例对象 , 不需要关注其内存占用 ; 2、堆内存中创建实例对象 栈内存 中声明 实例对象 方式是 : 该 s1...; Student* s2; C++ 语言中 , 可以使用 new 关键字 , 调用有参构造函数 , 创建 实例对象 ; 在下面的 C++ 代码中 , 声明并定义了 MyClass , 该类定义了一个有参构造函数..., 接受两个整数作为 构造函数参数 ; main 函数中 , 使用 使用 new 关键字 来调用 有参构造函数 创建 MyClass 实例对象 ; class MyClass { public...实例对象 , 则不需要关心 该对象 内存占用情况 , 在这块代码块作用域结束时 , ( 一般是函数大括号代码执行完毕 ) , 该 栈内存 中 MyClass 对象会被系统自动销毁 ; MyClass

    17420

    【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中方法 | evaluate 方法执行Groovy脚本 )

    文章目录 一、基础示例 二、根据字符串动态获取 MetaClass 中方法 二、使用 evaluate 执行字符串形式 Groovy 脚本 二、完整代码示例 一、基础示例 ---- 定义 Student..., 并执行 Student 对象 hello 方法 , def student = new Student(name: "Tom", age: 18) // 第一次调用 hello 方法 student.hello...() 执行结果如下 : Hello , my name is Tom, 18 years old 二、根据字符串动态获取 MetaClass 中方法 ---- 进行动态函数拦截时 , 事先不知道要要拦截方法名..., 这里声明一个药拦截方法名变量 ; // 要拦截方法名 def interceptMethodName = "hello" 使用如下代码操作 , 即可获取 MetaClass 中方法 ; //...${interceptMethodName}" 二、使用 evaluate 执行字符串形式 Groovy 脚本 ---- 动态函数拦截时 , 也不知道拦截后要执行哪些操作 , 使用 evaluate

    1.4K40

    C++核心准则​T.141:如果你需要只一个地方使用简单函数对象使用无名lambda表达式

    T.141: Use an unnamed lambda if you need a simple function object in one place only T.141:如果你需要只一个地方使用简单函数对象...,使用无名lambda表达式 Reason(原因) That makes the code concise and gives better locality than alternatives....检索完全一致和差不多一致lambda表达式(以便替换为命名函数或命名lamabda表达式) 原文链接 https://github.com/isocpp/CppCoreGuidelines/blob...这样一方面可以使读者了解真实软件开发工作中每个设计模式运用场景和想要解决问题;另一方面通过对这些问题解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式利弊,并合理运用设计模式。...对设计模式感兴趣而且希望随学随用读者通过本书可以快速跨越从理解到运用门槛;希望学习Python GUI 编程读者可以将本书中示例作为设计和开发参考;使用Python 语言进行图像分析、数据处理工作读者可以直接以本书中示例为基础

    66520

    千万别再一直无脑使用ES6箭头函数了,它虽然很有用但并不是万能

    ES6函数扩展之箭头函数详细介绍 引言 正文 一、箭头函数基本使用 二、箭头函数作用 三、箭头函数注意点 (1)例子1 (2)例子2 (3)例子3 四、不宜使用箭头函数场景 (1)定义方法...在这个例子中,我们箭头函数中打印arguments,最后返回却是普通函数传入实参内容,说明箭头函数是没有arguments对象。...四、不宜使用箭头函数场景 第三部分介绍了箭头函数注意点以后,我们可以看到,有些时候使用箭头函数是不合适。...() //返回 undefined 我们可以看到定义方法时,我们使用箭头函数,准备通过this.name获取obj中name,最后返回了undefined。...我们可以看到,打印是全局window对象,因为箭头函数没有自己this,所以往上找,就直接找到了全局window对象了。所以像这种情况,是建议使用箭头函数

    76310

    我不知道前端(三)

    和childNodes 一样,Firefox下不支持()取集合元素。因此如果想获取指定元素第一个HTML节点,可以使用children[0]来替代上面的getFirst函数。...: foo()被包含在对象 foo()调用前方有对obj引用 显式绑定 这是非常直观绑定方式、 function foo(){ ... } let obj={ a:2...new操作符和传统面向对象new并不一样; 我们用new调用函数就是所谓构造 使用new来调用函数,会有如下操作: 创建一个全新对象对象要执行[[Prototype]]连接 新对象绑定函数调用...(bar.a); // 2 复制代码 ---- 遵从this词法 我们上边说并无问题,不过如果对于箭头函数,那么this作用域又不一样 console.log=()=>{}; 这样是一个箭头函数...,而这样一个箭头函数this实际上并不存在,箭头函数this来自于它上一层作用域

    30230

    js箭头函数

    引入箭头函数作用 引入箭头函数作用:更简短函数并且不绑定this 更简短函数 let sum = (x,y,z) => { return x+y+z; } 绑定this 箭头函数出现之前,每个新定义函数都有他自己...(构造函数情况下是一个新对象严格模式函数调用中为 undefined,如果该函数被作为“对象方法”调用则为基础对象等)。...(箭头函数中若用了this,这个this指向包裹箭头函数第一个普通函数 this。) 绑定arguments 大多数情况下使用剩余参数是相较于arguments对象更好选择。...yield 关键字通常不能在箭头函数使用(除非是嵌套在允许使用函数)。...返回对象字面量时 箭头函数返回简单值时可以简写成: let sum = ( x, y ) => x + y but返回对象字面量时口以这样var func = () => {foo: 1},需要用圆括号括起来

    4.4K10

    如何修复Vue中 “this is undefined” 问题

    大多数情况下,我们应该在 Vue 中使用常规函数,特别是创建时 methods computed props watched props 虽然常规函数通常是我们所需要,但是箭头函数也非常方便。...this is undefined } } 简而言之,尽量避免Vue组件上使用箭头函数。这将会省去许多头痛和困惑问题。 有时使用箭头函数是很好,但这只不引用this情况下才有效。...我们通常使用箭头函数有几个原因 更短、更简洁语法 改善可读性 this 取自父 Vue方法中,箭头函数也可以作为匿名函数使用。...获取数据时使用正确函数 如果正在使用fetch或axios获取异步数据,最好使用 Promise。Promise喜欢匿名箭头函数,它们也使处理this问题变得容易得多。...某些编程语言只程序运行时才确定作用域内容。这可能会让人很困惑,所以大多数语言都只使用词法作用域。 箭头函数使用词法作用域,而常规函数和简写函数使用

    5K20

    鸿蒙开发学习(一)之ArkTS

    箭头函数定义如下,其函数是一个语句块: ( [param1, parma2,…param n] )=> { // 代码块 } 其中,括号函数入参,可以有0到多个参数,箭头后是函数代码块...模块里面的变量、函数模块外部是不可见,除非明确地使用 export 导出它们。类似地,我们必须通过 import 导入其他模块导出变量、函数等。...自定义组件中提供了一个build函数,开发者需函数以链式调用方式进行基本UI描述,UI描述方法请参考UI描述规范。...*装饰器:装饰器给被装饰对象赋予某一种能力,其不仅可以装饰或结构体,还可以装饰属性。多个装饰器可以叠加到目标元素上,定义同一行中或者分开多行,推荐分开多行定义。...,不仅可以组件使用,还可以不同组件层级间传递,比如父子组件之间、爷孙组件之间,也可以是全局范围传递。

    2.7K40

    Python核心编程四大神兽

    对于迭代器来讲需要用next()方法来获取值,修改函数为以下情况可以打印输出前4个整数立方数: if __name__ == '__main__': G = lifang_generate()...图解:Python解释器从上往下解释代码,首先是函数定义,这时计算机内存开辟了一片空间来存储这个函数函数没有被执行,继续往下解释;到了函数部分,首先执行蓝色箭头1,接着往下执行到蓝色箭头2第一次调用生成器取值...函数中程序接着往下执行到蓝色箭头3,生成器函数lifang_generate()第二次被调用,与第一次不同,第二次从上一次(也就是第一次)暂停位置继续往下执行,上一次停在了yield处,因此蓝色箭头...组合数据类型不是迭代器,但是属于可迭代对象,可以通过iter()函数将其转换位迭代器,这样就可以使用next方法来获取对象各个元素值,代码如下: from collections import Iterable...图解:Python解释器从上往下解释代码,首先定义一个函数,func指向了该函数(红箭头所示);接着到函数执行第14行代码 ret = func(10),此时先执行赋值号“=”右边内容,这里调用了函数

    72430

    JS 中几种轻松处理’this’指向方式

    3.使用箭头函数 有没有办法没有附加变量情况下静态绑定this? 是的,这正是箭头函数作用。...简单来说,它使用来自其定义外部函数this值。 建议需要使用外部函数上下文所有情况下使用箭头函数。 4. 绑定上下文 现在让咱们更进一步,使用ES6中重构Person。...情况下使用附加变量self或箭头函数来修复this指向是行不通。...这种方法是中绑定this最有效和最简洁方法。 6. 总结 与对象分离方法会产生 this 指向不正确问题。静态地绑定this,可以手动使用一个附加变量self来保存正确上下文对象。...然而,更好替代方法是使用箭头函数,其本质上是为了词法上绑定this。 中,可以使用bind()方法手动绑定构造函数方法。

    1K20

    前端面试比较好回答

    DNS同时使用TCP和UDP协议?DNS占用53号端口,同时使用TCP和UDP协议。 (1)区域传输时候使用TCP协议辅域名服务器会定时(一般3小时)向域名服务器进行查询以便了解数据是否有变动。...obj方法b是使用箭头函数定义,这个函数this就永远指向它定义时所处全局执行环境中this,即便这个函数是作为对象obj方法调用,this依旧指向Window对象。...但是由于箭头函数时没有自己this,且this指向外层执行环境,且不能改变指向,所以不能当做构造函数使用。(6)箭头函数没有自己arguments箭头函数没有自己arguments对象。...箭头函数中访问arguments实际上获得是它外层函数arguments值。...z-index 使用是在有两个重叠标签,一定情况下控制其中一个另一个上方或者下方出现。

    1K30

    JS箭头函数之:为何用?怎么用?何时用?

    绑定this 箭头函数出现之前,每个新定义函数都有它自己this值(构造函数情况下是一个新对象严格模式函数调用中则为undefined,如果该函数被作为"对象方法"调用则为基础对象等...arguments 箭头函数绑定Arguments对象。...foo 函数arguments对象,arguments[0]是 n return f(); } foo(1); // 2 大多数情况下使用剩余参数是相对使用arguments对象更好选择...(推荐使用场景) 使用new操作符 箭头函数不能用作构造器,和new一起使用会抛出错误。...var Foo = () => {}; console.log(Foo.prototype); // undefined 使用yield关键字 yield 关键字通常不能在箭头函数使用(除非是嵌套在允许使用函数

    3.9K10
    领券