• 实现一个 promise (全功能)
    • 实现一个co
    • 节流和防抖的应用场景 ,如何实现
    • 实现一个 vue 的响应式
    • 模拟一个 new 运算符 ```javascript // 第二版的代码 function objectFactory() {

      var obj = new Object(),

      Constructor = [].shift.call(arguments);

      obj.proto = Constructor.prototype;

      var ret = Constructor.apply(obj, arguments);

      return typeof ret === ‘object’ ? ret : obj;

    };

    1. - 模拟call apply
    2. ```javascript
    3. // 第三版
    4. Function.prototype.call = function (context) {
    5. var context = context || window;
    6. context.fn = this;
    7. var args = [];
    8. for(var i = 1, len = arguments.length; i < len; i++) {
    9. args.push('arguments[' + i + ']');
    10. }
    11. var result = eval('context.fn(' + args +')');
    12. delete context.fn
    13. return result;
    14. }
    1. Function.prototype.apply = function (context, arr) {
    2. var context = Object(context) || window;
    3. context.fn = this;
    4. var result;
    5. if (!arr) {
    6. result = context.fn();
    7. }
    8. else {
    9. var args = [];
    10. for (var i = 0, len = arr.length; i < len; i++) {
    11. args.push('arr[' + i + ']');
    12. }
    13. result = eval('context.fn(' + args + ')')
    14. }
    15. delete context.fn
    16. return result;
    17. }
    • 实现一个时间格式化函数
      1. const moment = function (date, format){
      2. date = date || new Date()
      3. const matchStr = {
      4. 'YYYY':new Date().getFullYear(),
      5. 'MM': new Date().getMonth() + 1,
      6. 'DD': new Date().getDate(),
      7. }
      8. return format.replace(/(YYYY?|MM?|DD?)/g, function (match){
      9. return matchStr[match]
      10. })
      11. }
      12. const d = moment(new Date(),'YYYY-MM-DD')
      13. console.log(d)