123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- </head>
- <body>
- <script>
- // 第一步向Function.prototype上添加一个bind2方法
- // Function.prototype.bind2 = function (obj,...arg) {
- // // 返回一个函数
- // let that = this;
- // return function () {
- // // that.call(obj);
- // // that.apply(obj,arg);
- // that.call(obj,...arg);
- // }
- // }
- Function.prototype.bind2 = function (obj) {
- // 返回一个函数
- var that = this;
- // console.log(arguments.slice(1));
- // console.log(arguments);
- // console.log(Array.from(arguments));
- // var arg = Array.from(arguments);
- var arg = Array.prototype.slice.call(arguments,1);
- return function () {
- // that.call(obj);
- // that.apply(obj,arg);
- that.apply(obj,arg);
- }
- }
- function foo(x,y) {
- console.log(this.a,x,y)//hello
- }
- var obj = {
- a: "hello"
- }
- var foo2 = foo.bind2(obj,1,2);
- foo2()
- </script>
- </body>
- </html>
|