在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ js寫一個鏈?zhǔn)秸{(diào)用的函數(shù)

js寫一個鏈?zhǔn)秸{(diào)用的函數(shù)

clipboard.png

寫一個print() 函數(shù),能夠通過如圖上不同的調(diào)用,顯示不同的結(jié)果。
誰知道怎么寫的?!

回答
編輯回答
心悲涼

一樓妙啊。
clipboard.png

2017年3月19日 10:20
編輯回答
尕筱澄
function Print () {
  function createAPrinter () {
    return {
      Print: function printA () {
        console.log('aaaaa');
      }
    }
  }

  createAPrinter.Print = function () {
    return function printB () {
      console.log('bbbbb');
    }
  }

  return createAPrinter;
}

要詳細(xì)講下嗎?其實一步一步推并不難的:

首先我們聲明這樣兩個函數(shù):

function printB () {
  console.log('bbbbb');
}
function printA () {
  console.log('aaaaa');
}

看一看題目,你會發(fā)現(xiàn):

Print().Print() === printB
Print()() === printA

于是我們往前推一步,再兩個函數(shù),他們分別返回 printB 和 printA:

function createPrintB () {
  return printB;
}
function createPrintA () {
  return printA;
}

看看上面我們發(fā)現(xiàn)的等式,你會發(fā)現(xiàn):

Print().Print === createPrintB
Print() === createPrintA
// 你還會發(fā)現(xiàn)
createPrintA.Print === createPrintB

到這里你就可以寫出:

function Print () {
  function createPrintA () {
    return function printA () {
      console.log('aaaaa');
    }
  }

  function createPrintB () {
    return function printB () {
      console.log('bbbbb');
    }
  }
  
  createPrintA.Print = createPrintB;

  return createPrintA;
}

然后整理一下就是我上面的答案了。

希望對你有幫助

2017年11月17日 00:21
編輯回答
心癌
function Print() {
    var print = function () {
        return {
            Print: function () {
                console.log("aaaaa")
            }
        }
    }
    print.Print = function () {
        return function () {
            console.log("bbbbb")
        }
    }
    return print;
}
Print().Print()();
Print()().Print();
2017年2月12日 04:04
編輯回答
默念
function Print() {
  function a() {
    return {
      Print() {
        console.log('aaaaa')
      }
    }
  }
  a.Print = () => () => console.log('bbbbb')
  return a
}
2017年8月5日 00:04
編輯回答
厭惡我
var Print=new Proxy(function(){},{
        apply:function(target){
            target.index=~~target.index+1;
            if(target.index %3 ==0){
                console.log(String.fromCharCode(target.index/3+96).repeat(3));
            }
            return Print;
        }
    });
    Print.Print=Print;
    Print().Print()();
    Print()().Print();
2018年5月5日 05:37