一、方法体内返回对象实例自身(this)
复制代码 代码如下:
function ClassA(){
this.prop1 = null;
this.prop2 = null;
this.prop3 = null;
}
ClassA.prototype = {
method1 : function(p1){
this.prop1 = p1;
return this;
},
method2 : function(p2){
this.prop2 = p2;
return this;
},
method3 : function(p3){
this.prop3 = p3;
return this;
}
}
定义了function/类ClassA。有三个属性/字段prop1,prop2,prop3,三个方法methed1,method2,method3分别设置prop1,prop2,prop3。
链式调用如下:
复制代码 代码如下:
var obj = new ClassA();
obj.method1(1).method2(2).method(3); // obj -> prop1=1,prop2=2,prop3=3
可以看到对obj进行了连续三次操作,只要愿意ClassA的N多方法都这样定义,调用链会一直延续。
该方式缺点是链方法唯一地绑定于一种对象类型(ClaaaA),按这种方式实现链式操作,每定义一个类,其方法体中都要返回this。第二种方式可以解决这个问题。
二、对象传入后每次调用返回函数自身
复制代码 代码如下:
/**
* chain 精简版
* @param {Object} obj
*/
function chain(obj){
return function(){
var Self = arguments.callee; Self.obj = obj;
if(arguments.length==0){
return Self.obj;
}
Self.obj[arguments[0]].apply(Self.obj,[].slice.call(arguments,1));
return Self;
}
}
//定义的function/类ClassB
function ClassB(){
this.prop1 = null;
this.prop2 = null;
this.prop3 = null;
}
ClassB.prototype = {
method1 : function(p1){
this.prop1 = p1;
},
method2 : function(p2){
this.prop2 = p2;
},
method3 : function(p3){
this.prop3 = p3;
}
}
注意ClassB的method1,method2,method3中不再返回this了。
链式调用如下:
复制代码 代码如下:
var obj = new ClassB();
chain(obj)('method1',4)('method2',5)('method3',6); // obj -> prop1=4,prop2=5,prop3=6
第一种方式3次调用后返回了对象自身,这里使用一个空"()"取回对象
复制代码 代码如下:
// result -> prop1=4,prop2=5,prop3=6
var result = chain(obj)('method1',4)('method2',5)('method3',6)();
这种方式写类时方法体中无须返回this,且可以对任何对象进行链式调用。
从写法上总结下两种的调用方式:
复制代码 代码如下:
obj
.method1(arg1)
.method2(arg2)
.method3(arg3)
...
chain(obj)
(method1,arg1)
(method2,arg2)
(method3,arg3)
...
最后,感谢沐海,我是从wee库中获取以上灵感的。
/201101/yuanma/chain.rar
相关推荐:
WPJVX:开启数字化未来的智慧平台,关键词排名技术咨询乐云seo
AI撰写大数据解决方案:开启智能数据时代的新篇章,ai头号公敌
ChatGPT画布打不开?如何解决这一常见问题?,Ai怎么储存为Ai格式在桌面
SEO确实是企业增长的关键,这些技巧让你走在行业前沿,山东网站建设信息
SEO优化要钱吗?揭秘SEO投资背后的价值与回报,ai领域
ChatGPTWindows版本:让AI助手成为你的工作与生活得力助手,Ai相减变形
ChatGPT403:引领人工智能新时代,颠覆你的工作与生活方式,ai nak
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
seo站长什么意思,站长工具 - seo综合查询 ,ai少女身材
SEO短视:为何眼前的成效不能成为长久的策略?,网站上线seo优化
SEO站外优化策略:提升网站排名的关键因素,遵义公司网站推广
如何选择适合你的AI工具?全面解析AI工具哪个好用
SEO领先-如何借助SEO技术让您的网站脱颖而出,seo是黑客吗
内容创作新时代:自动生成文章的AI如何改变写作生态
SEO技术如何通过优化提升网站流量与排名,四平网站优化公司
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
产品seo什么意思,产品seo标题是什么 ,ai模仿张宇
SEO刷:让你的网站一夜之间登顶搜索引擎!,独特seo技巧
二SEO是什么,h二seo三是什么 ,ai手术机
用AI写文章:效率与创意的完美结合
seo需要学些什么内容,学seo的基础 ,中国ai公司年收入
SEO指:如何通过精准优化提高网站流量和转化率,无锡论坛营销推广要多久
SEO非常:如何利用SEO提升网站排名与流量,助力品牌快速成长,绥化短视频营销推广
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,助您畅享无障碍智能对话体验,ai记录人
“更加通顺”-让生活与工作无缝衔接的语言魅力,SEO书架书桌收纳
文章AI指令提升写作效率的智能助手
ChatGPT不能用了?了解这一背后的真相及解决方法,ai恐怖头像
好用的AI写作工具,提升写作效率与创意的最佳选择
SEO译为:网站排名背后的优化策略,会展中心网站优化
文章AI排版,让创作更高效的秘密武器
AI一键生成原创文章,让创作更高效更轻松!
SEO优化的话题:助力企业成功的关键,夏杰ai智能管家
SEO才能:提升网站排名,突破网络营销的核心竞争力,南宁本地seo营销公司
ChatGPT页面空白无法登录?如何解决这一困扰?,温州ai字幕生成
SEO能够助力网站流量增长,提升品牌竞争力,Seo网站排名原理
ChatGPT崩了?用户称打开是一片空白,背后隐藏了什么?,ai 新技巧
ChatGPT怎么打不开了?解决办法,轻松恢复畅通无阻!,ai订酒店ai对话
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变
为什么做酒店seo,为什么做酒店 ,ai uehara下载
用AI批量下载工具,高效管理你的文件和资源
SEO优化10种策略:提升网站排名的有效方法,帅气ai男头白底
文章写作AI:让创作更高效、精准的智能助手
URL站长的崛起:打造高效网站运营的秘密武器,网站建设费用计算依据
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
SEO小白必看!从零起步SEO的秘诀,轻松提升网站排名,南京网站运营优化平台
SEO怎么优化比较好?全面提升网站排名的实用技巧,高级ai玩家
ChatGPT无法访问原因分析及解决方案,斑马ai报道
WPS改写-轻松提升文档创作效率的秘密武器,推广网站的优势
ChatGDP人工智能:未来科技赋能企业与个人的智能变革,如何用AI绘制人体