找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11957|回复: 1

[问题求助] js闭包怎么返回一个构造函数

[复制链接]
发表于 2023-3-5 22:07:44 | 显示全部楼层 |阅读模式
网上搜到的闭包都是返回一个正常的函数
但是我想要返回一个类或者构造函数怎么办?
对象赋值到变量都是传址的
这样行吗?

  1. function s(){
  2.         var div_count=0;
  3.         return(class{
  4.                 constructor(){
  5.                         alert(1);
  6.                 }
  7.         });
  8. }
复制代码
发表于 2023-3-5 22:24:17 | 显示全部楼层
本帖最后由 老刘1号 于 2023-3-5 22:29 编辑

多层套娃似神仙

  1. function s(){
  2.         var div_count=0;
  3.         return (function() {;
  4.                 div_count ++;
  5.                 var obj = {'cnt' : div_count};
  6.                 return obj;
  7.         });
  8. }
  9. cnt1 = s();
  10. cnt2 = s();
  11. console.log(cnt1());
  12. console.log(cnt1());
  13. console.log(cnt1());
  14. console.log(cnt2());
复制代码
当然更离谱的套娃也有,比如匿名函数实现递归的Y组合子
  1. var fn = f => n => n ? f(n-1)*n : 1;
  2. var Y = y => (x => y(n => x(x)(n)))(x => y(n => x(x)(n)));
  3. alert(Y(fn)(4));
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:13 , Processed in 0.015961 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表