如何实现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());

  

 

 

posted @ 2021-01-21 11:07  小破的博客  阅读(89)  评论(0编辑  收藏  举报