12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <!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>
- //10、用call 或 apply 实现bind 方法
- function foo(str1,str2) {
- console.log(this.a,str1,str2)
- }
- var obj = {
- a: "hello"
- }
- // foo.bind(obj);
- // 实现代码
- Function.prototype.bind2 = function(){
- // console.log(this);
- var _obj = arguments[0];
- // var p1 = arguments[1];
- // var p2 = arguments[2];
- // console.log(Array.from(arguments))
- var pArr = Array.prototype.slice.call(arguments,1);
- // console.log(pArr);
- // console.log(arguments);
- var that = this;
- return function(){
- // console.log(that)
- that.apply(_obj,pArr)
- }
- }
- var obj1 = {
- a:"world"
- }
- // 执行
- var foo2 = foo.bind2(obj1,"love","coding");
- foo2()//hello
- // function foo3(){
- // console.log(this.a)
- // }
- // var foo4 = foo3.bind2(obj);
- // foo4();
- var arr = ["obj",'a','b','c','d'];
- var arr1 = arr.slice(1);
- // console.log(arr1);
- </script>
- </body>
- </html>
|