PooledClass.addPoolingTo(CopyConstructor)用于将构造函数CopyConstructor转化为工厂函数,意义是管理实例数据的创建和销毁,并将销毁数据的实例推入到实例池CopyConstructor.instancePool中。
'use strict'; var _prodInvariant = require('./reactProdInvariant');// 生产环境React形式带url报错 // invariant(condition,format,a,b,c,d,e,f) condition为否值,替换format中的"%s",并throw error报错 var invariant = require('fbjs/lib/invariant'); // 单参数创建实例,或者为实例提供单参数数据 var oneArgumentPooler = function (copyFieldsFrom) { var Klass = this; if (Klass.instancePool.length) { var instance = Klass.instancePool.pop(); Klass.call(instance, copyFieldsFrom); return instance; } else { return new Klass(copyFieldsFrom); } }; var twoArgumentPooler = function (a1, a2) { var Klass = this; if (Klass.instancePool.length) { var instance = Klass.instancePool.pop(); Klass.call(instance, a1, a2); return instance; } else { return new Klass(a1, a2); } }; var threeArgumentPooler = function (a1, a2, a3) { var Klass = this; if (Klass.instancePool.length) { var instance = Klass.instancePool.pop(); Klass.call(instance, a1, a2, a3); return instance; } else { return new Klass(a1, a2, a3); } }; var fourArgumentPooler = function (a1, a2, a3, a4) { var Klass = this; if (Klass.instancePool.length) { var instance = Klass.instancePool.pop(); Klass.call(instance, a1, a2, a3, a4); return instance; } else { return new Klass(a1, a2, a3, a4); } }; // 销毁实例数据,并将实例推入实例池Klass.instancePool中 var standardReleaser = function (instance) { var Klass = this; !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0; instance.destructor(); if (Klass.instancePool.length < Klass.poolSize) { Klass.instancePool.push(instance); } }; var DEFAULT_POOL_SIZE = 10; var DEFAULT_POOLER = oneArgumentPooler; // 将构造函数CopyConstructor工厂化,调用getPooled方法生成实例,release方法销毁实例数据 // release方法销毁实例数据的同时,将实例推入instancePool实例池中,可通过getPooled方法取出 // release方法的执行需要构造函数CopyConstructor内部包含destructor原型方法 // poolSize约定实例存储个数,默认为10 // 当次参pooler存在时,以pooler替代默认创建实例的方法oneArgumentPooler,将单参数传入构造函数 var addPoolingTo = function (CopyConstructor, pooler) { var NewKlass = CopyConstructor; NewKlass.instancePool = []; NewKlass.getPooled = pooler || DEFAULT_POOLER; if (!NewKlass.poolSize) { NewKlass.poolSize = DEFAULT_POOL_SIZE; } NewKlass.release = standardReleaser; return NewKlass; }; var PooledClass = { addPoolingTo: addPoolingTo,// 将构造函数转化为工厂函数,提供实例池,管理实例数据的销毁和生成 oneArgumentPooler: oneArgumentPooler,// 单参数创建实例 twoArgumentPooler: twoArgumentPooler,// 双参数创建实例 threeArgumentPooler: threeArgumentPooler, fourArgumentPooler: fourArgumentPooler }; module.exports = PooledClass;
相关推荐
微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)...
微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)...
【标题】"彩票网站源码_php彩票源码程序,彩票系统全套源码php"涉及到的知识点主要涵盖了彩票网站开发的核心技术、架构以及部署流程。彩票网站的开发通常基于Web技术,这里的源码采用PHP作为服务器端脚本语言,MySQL...
PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码PUBG雷达网页透视源码...
SSCOM源码 DELPHI 源码 绝对源码!欢迎下载
unity武侠角色扮演游戏源码unity武侠角色扮演游戏源码unity武侠角色扮演游戏源码unity武侠角色扮演游戏源码unity武侠角色扮演游戏源码unity武侠角色扮演游戏源码unity武侠角色扮演游戏源码unity武侠角色扮演游戏源码...
自己搜集的源码,非常多。。一部分论坛 有了。一起打包吧。另一部分精品源码,都是来自己其他地方,主要是付费群和教学群。 2020/09/04 周五 23:52 400 1.数据类型.js 2020/09/04 周五 23:52 719 2.运算符.js 2020/...
Unity游戏代码 ,Unity经典游戏源码 , Unity休闲游戏源码, Unity容易上手的游戏源码,Unity小游戏源码,Unity新手练习源码,Unity个人开发源码,Unity优秀项目,Unity商店优秀作品。 Unity精品农场经营游戏源码unity完整...
易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码易语言屏幕画准星源码...
本资源包含2000套微信小程序的源码,对于开发者来说是一份宝贵的参考资料,可以用来学习、研究或者作为开发新项目的起点。 源码下载是开发者获取程序原始代码的方式,对于学习和理解编程逻辑至关重要。这些微信小...
【网狐源码全套源码+详细架设教程】是一个包含全面的网狐框架源代码和相关教程资源的集合,适合于对网狐框架感兴趣、想要深入学习或进行实际项目开发的IT从业者。这个压缩包提供了从基础到高级的全方位学习材料,...
小程序源码、小游戏源码下载地址: https://gitee.com/giteesource/app/blob/master/resource/1008.md 包含源码有: 1、游戏小程序:轻松愉快的休闲时光 2、商城小程序:便捷的在线购物体验 3、工具小程序:实用的...
【借贷公司源码 网贷平台源码 php借贷源码】这个标题揭示了我们要讨论的核心内容,即一套用于建立在线借贷或网贷平台的源代码,该源代码是基于PHP编程语言实现的。PHP是一种广泛使用的开源服务器端脚本语言,尤其在...
易语言源码就是用这种语言编写的程序代码,通过阅读和理解这些源码,开发者可以学习到如何利用易语言来实现特定功能,比如变速齿轮。 在易语言中实现变速齿轮功能,主要涉及到以下几个关键知识点: 1. **系统时间...
订餐网,外卖网源码,带积分商城,商家系统,外卖网站建设! 系统特点: 周密策划、项目为先 "项目指导技术,技术服从项目",这是我们一贯秉承的原则,也是我们与其他系统开发商、网站建设公司的本质区别所在!我们...
Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发...
移动医疗APP源码是开发医疗健康应用的核心组成部分,它包含了应用程序的所有逻辑和界面设计。在Android平台上,这种源码通常是用Java或Kotlin语言编写的,并使用Android Studio作为集成开发环境(IDE)。在这个案例...
《cocos creator完整麻将源码解析与开发指南》 cocos Creator是一款强大的2D游戏开发引擎,被广泛应用于游戏开发,尤其是休闲娱乐类游戏,如麻将。本篇将深入探讨"麻将源码"这一主题,结合cocos Creator的特性,为...
【H5游戏源码】微信H5游戏源码 H5游戏玫瑰夺宝源码 H5游戏竞猜游戏源码+视频搭建教程 H5游戏玫瑰夺宝源码源码已经测试,完全无问题可正常搭建,但是有无后门没有去检测,暂且时不知道后门的问题,免费提供给大家,...
JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园...