js 链式

写一个函数让下面两个输出结果相同;console.log(sum(2)(3));console.log(sum(2,3));

var sum = (function() {
    var list = [];
    var add = function() {
        // 拼接数组
        var args = Array.prototype.slice.call(arguments);
        list = list.concat(args);
        return add;
    }
    // 覆盖 toString 方法
    add.toString = function() {
        // 计算总和
        var sum = list.reduce(function(pre, next) {
            return pre + next;
        });
        // 清除记录
        list.length = 0;
        return sum;
    }
    return add;
})();
var s=sum(2, 3 ,4)(3)(1,2);
console.log(s.toString());
console.log(sum(2, 3 ,4).toString());
console.log(sum(2, 3 ,4).toString());
console.log(sum(2)(3)(4).toString());
console.log(sum(2)(3)(4).toString());
时间: 2024-12-28 09:56:43

js 链式的相关文章

文件上传以及JS链式结构

文件上传: 文件上传使用FileUpload控件,使用控件的SaveAs方法,需要绝对路径. 获取文件的绝对路径:Server.MapPath(相对路径); 或许要上传文件的本身名字用.FileName获取. 因为名字相同的文件将会被直接覆盖,所以一般文件名字要拼接上传时间和用户名保证不重名. 上传文件默认最大为4MB,在C#端限制文件大小有缺陷,一般用JS端限制. 获取要上传的文件通过ID获取FileUpload控件然后通过value值获取文件然后通过.length属性确定是否有文件要上传,然

Node.js链式回调

由于异步的关系,代码的书写顺序可能和执行顺序并不一样,可能想先执行A再执行B,但由于异步可能B要先于A执行.例如在OC中使用AFnetworking请求数据然后刷新页面,由于网络请求是用block实现的异步方法,所以刷新的时候并没有数据,为了解决这个问题,一般会在请求响应结束在block中刷新页面(这就回出现循环引用的问题,不过node中不会出现). 上面是OC中异步执行中的链式回调,在node.js中也是使用这样的方法在回调中调用方法来实现链式回调. function logCar(car,c

JS 链式调用

<!-- ————————JS函数链式调用——————— --> function Dog(){ this.run=function(){ alert("跑"); return this; }; this.eat=function(){ alert("吃"); return this; }; this.sleep=function(){ alert("睡觉"); return this; }; } var dog=new Dog();

js链式调用

我们都很熟悉jQuery了,只能jQuery中一种非常牛逼的写法叫链式操作 * $('#div').css('background','#ccc').removeClass('box').stop().animate({width:300}) 那这是如何实现的呢,我自己写了个例子:并非jQuery源码 Ferrinte.prototype.show=function () { for(var i=0;i<this.elements.length;i++) { this.elements[i].s

js链式动画小例子

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>链式动画</title> <style> * { margin: 0; padding: 0; } #odiv { width: 100px; height: 100px; background: pink; opacity: 0.5; } </style> </hea

js链式操作DOM节点的简单封装

function Base() { //把返回的节点对象保存到一个Base 对象的属性数组里 this.elements = []; //获取id 节点 this.getId = function (id) { this.elements.push(document.getElementById(id)); return this; }; //获取name 节点数组 this.getName = function (name) { var names = document.getElements

js简单实现链式调用

链式调用实现原理:对象中的方法执行后返回对象自身即可以实现链式操作.说白了就是每一次调用方法返回的是同一个对象才可以链式调用. js简单实现链式调用demo Object.prototype.show = function() {   console.log('show');   return this;  }  Object.prototype.hide = function() {   console.log('hide');   return this;  }  var div = doc

如何写 JS 的链式调用 ---》JS 设计模式《----方法的链式调用

1.以$ 函数为例.通常返回一个HTML元素或一个元素集合. 代码如下: function $(){ var elements = []; for(var i=0;i<arguments.length;i++){ var element = argument[i]; if(typeOf element == "String") { element = document.getElementById(element); } if ( arguments.length === 1)

js实现方法的链式调用

假如这里有三个方法:person.unmerried();person.process();person.married();在jQuery中通常的写法是:person.unmerried().process().married();而在js中要实现链式调用,只需在类中的每个方法中通过this关键字返回对象实例的引用. function Person(){}; Person.prototype.status =false; Person.prototype.married =function()