- function call_mock (obj) {
- var aim_fun = this;
- var argument = [];
- for (var i = 1; i < arguments.length; i++) {
- argument.push(arguments[i]);
- }
- obj.aim_fun = aim_fun;
- var result = eval('obj.aim_fun('+ argument.join() + ')');
- delete obj.aim_fun;
- return result;
- }
- Function.prototype.call_mock = call_mock;
- function apply_mock (obj, args) {
- var aim_fun = this;
- obj.aim_fun = aim_fun;
- var result = eval('obj.aim_fun('+ args.join() + ')');
- delete obj.aim_fun;
- return result;
- }
- Function.prototype.apply_mock = apply_mock;
- function bind_mock (obj) {
- var aim_fun = this;
- var argument = [];
- for (var i = 1; i < arguments.length; i++) {
- argument.push(arguments[i]);
- }
- var fNOP = function () {};
- var fBound = function () {
- return aim_fun.apply_mock(obj, argument)
- }
- fNOP.prototype = this.prototype;
- fBound.prototype = new fNOP();
- return fBound;
- }
- Function.prototype.bind_mock = bind_mock;
- var a = {
- c:1,
- see(a, b) {
- console.log(`${this.c}${a}${b}`);
- }
- }
- c = 0;
- a.see.bind_mock(global, 1, 2);
来源: http://www.bubuko.com/infodetail-2969217.html