关于Function.prototype.call.bind()的疑惑?

关于Object.prototype.hasOwnProperty.call(obj);的疑惑`?

第一种理解:这里可以理解为Object.prototype.hasOwnProperty的this通过call方法绑定在obj对象上,同时由这个函数来进行判断?
第二种理解:但是又似乎可以理解为Object.prototype.hasOwnProperty的call方法里传入了一个obj对象参数,并且在call方法的内部运行?可是这样的话,看起来就像是call方法在执行这个判断操作?

关于Function.prototype.call.bind(Object.prototype.hasOwnProperty,obj);的疑惑?
以第一种方式理解,我就理解不了下面这段代码,但是以第二种方式,好像就能理解了,这里通过bind把Function.prototype.call函数的this绑定在Object.prototype.hasOwnProperty上,同时传入obj这个参数,因为实际的判断是由call函数在执行,而Object.prototype.hasOwnProperty提供了运行环境.
但是这么理解,那继承了call方法的对象的相关操作都由call方法来完成?
比如Function.prototype.call.bind(Array.prototype.slice)call函数来截取数组?
这样call,apply岂不成了万能函数?

阅读 3.8k
1 个回答

Object.prototype.hasOwnProperty.call(obj)相当于obj.hasOwnProperty(),你的第一种理解

Function.prototype.call.bind(Object.prototype.hasOwnProperty,obj)如你所说,相当于在Function.prototype.call上绑定了this,返回了一个类似这样的函数

function call(){
  Object.prototype.hasOwnProperty.call(obj)
}

但是Function.prototype.call.bind(Array.prototype.slice)确实也返回一个绑定了Array.prototype.slice处理方法的call函数,但是这么做意义是什么呢?

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