欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > JS中对象方法与函数调用(高阶函数理解)

JS中对象方法与函数调用(高阶函数理解)

2025/5/19 2:30:41 来源:https://blog.csdn.net/2302_81312344/article/details/148000849  浏览:    关键词:JS中对象方法与函数调用(高阶函数理解)
var b1 = {b2: [1, "abc", console.log],b3: function () {console.log("b3");return function () {return "inner";};},};     
//   执行调用
b1.b2[2](4); // 4b1.b3()(); // b3
console.log(b1.b3()()); // b3 inner

1. 对象属性访问

b1.b2 和 b1.b3 是通过点符号访问对象属性的方式。b1 是一个对象,它有两个属性:

  • b2: 一个数组
  • b3: 一个函数
    b3: function () {console.log("b3");  // 第一步:立即执行,输出"b3"return function () {  // 第二步:返回一个匿名函数return "inner";};
    }

2. 数组元素作为函数调用

b1.b2[2](4) 这行代码展示了几个重要概念:

  • b1.b2 是一个数组,包含三个元素:1"abc", 和 console.log
  • b1.b2[2] 获取数组的第三个元素,即 console.log
  • console.log 是一个函数,所以可以像普通函数一样被调用
  • (4) 是传递给 console.log 的参数

当执行 b1.b2[2](4) 时,实际上等同于 console.log(4),所以会在控制台输出 4

b3: function () {console.log("b3");  // 第一步:立即执行,输出"b3"return function () {  // 第二步:返回一个匿名函数return "inner";};
}

执行过程:

  1. 调用 b1.b3() 时,首先执行外层函数体:
    • 输出 "b3" 到控制台
    • 返回内层的匿名函数
  2. 然后 ( ) 表示立即调用这个返回的匿名函数
  3. 匿名函数执行并返回字符串 "inner"

但根据你的注释 b1.b3()(); // b3,似乎有误解。实际上:

  • b1.b3() 会输出 "b3" 并返回一个函数
  • b1.b3()() 会输出 "b3" 然后返回 "inner"
  • 如果你只看到 "b3",可能是因为你没有捕获第二个调用的返回值

3. 链式函数调用

b1.b3()() 展示了链式函数调用的概念:

  • 第一个 () 调用 b3 函数
  • 第二个 () 调用 b3 返回的函数

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词