<html>
<head>
<title>手写bind函数</title>
<meta charset="utf-8">
<style>
</style>
</head>
<body>
返回一个函数
</body>
</html>
<script src="../js/jquery.min.js"></script>
<script>
Function.prototype.bind1 = function () {
//arguments是列表 把列表拆解为数组
const args = Array.prototype.slice.call(arguments);
//获取 this 数组第一项(去除第一项)
const t = args.shift();
//fn1.bind(...) 中的fn1
const self = this;
//返回一个函数
return function () {
return self.apply(t, args)
}
}
function fn1(a, b, c) {
console.log('this' + this);
console.log(a + " " + b + " " + c)
return "this is fn1"
}
const fn2 = fn1.bind1({ x: 2 }, 10, 20, 30) //bind 函数 bind 可以改变this 的指向
fn2()
console.log(fn2())
console.log(fn1.hasOwnProperty('bind')) //false
console.log(Function.hasOwnProperty('bind')) //false
console.log(Function.prototype.bind) //f bind()
console.log(fn1.__proto__ === Function.prototype)//true
</script>