JavaScript中 bind函数 返回的 绑定函数可以作为构造函数,这样做的意义是什么?

const obj={}
function f1() {
}

const f2=f1.bind(obj)
const obj2=new f2()

这个obj2有什么特点呢 和直接new f1()出来的对象有什么不同?

阅读 3.1k
4 个回答

this 指向不一样

直接 new f1() 里面没有 obj 啊。其实你不写框架的话,基本上用不到 bind 了。

使用new操作符没什么区别
如果是直接调用,f1()和f2()的this指针指向会不同

没有什么意义。其实可以规定 bind 过的函数不能做构造函数用,就像箭头函数不能 new,class 不能当普通函数直接调用一样,引擎内部是知道一个函数是否是 bind 过的函数的。

标准规定这样可以用,而且 bind 不改变 new 的内部 this 指向。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题