关于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
岂不成了万能函数?
Object.prototype.hasOwnProperty.call(obj)
相当于obj.hasOwnProperty()
,你的第一种理解Function.prototype.call.bind(Object.prototype.hasOwnProperty,obj)
如你所说,相当于在Function.prototype.call
上绑定了this,返回了一个类似这样的函数但是
Function.prototype.call.bind(Array.prototype.slice)
确实也返回一个绑定了Array.prototype.slice
处理方法的call函数
,但是这么做意义是什么呢?