- 实现一个 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;
};
- 模拟call 和 apply```javascript// 第三版Function.prototype.call = function (context) {var context = context || window;context.fn = this;var args = [];for(var i = 1, len = arguments.length; i < len; i++) {args.push('arguments[' + i + ']');}var result = eval('context.fn(' + args +')');delete context.fnreturn result;}
Function.prototype.apply = function (context, arr) {var context = Object(context) || window;context.fn = this;var result;if (!arr) {result = context.fn();}else {var args = [];for (var i = 0, len = arr.length; i < len; i++) {args.push('arr[' + i + ']');}result = eval('context.fn(' + args + ')')}delete context.fnreturn result;}
- 实现一个时间格式化函数
const moment = function (date, format){date = date || new Date()const matchStr = {'YYYY':new Date().getFullYear(),'MM': new Date().getMonth() + 1,'DD': new Date().getDate(),}return format.replace(/(YYYY?|MM?|DD?)/g, function (match){return matchStr[match]})}const d = moment(new Date(),'YYYY-MM-DD')console.log(d)
