如何实现new,call,apply,bind的底层原理。
new做了什么?
new是用来实例化对象的,当new了一个对象后
1.创建一个新对象
2.将构造函数的作用域赋值给新对象(this指向新对象)
3.执行构造函数里面的代码(为这个新对象添加属性)
4.返回新的对象
call,apply,bind的用法
三个都可以改变函数的this指向
代码示例:
let a = { name: 'xq', getname: function (msg) { return msg + this.name } } let b = { name: 'ss' } console.log(a.getname('hello')); console.log(a.getname.call(b, 'hi')); console.log(a.getname.apply(b, ['hi'])); let name = a.getname.bind(b, 'hi') console.log(name());