据我所知,以下三种方法完成了完全相同的事情:确定是否Element.prototype
具有 native property tagName
,无论是否Element.prototype.hasOwnProperty
被本地覆盖:
var ownsBind = Function.prototype.call.bind( Object.prototype.hasOwnProperty );
var ownsReturnCallOfOriginal = function ownsReturnCallOfOriginal( obj, prop ) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
var ownsAssigned = Object.prototype.hasOwnProperty;
var EP = Element.prototype;
console.log( ownsBind( EP, 'tagName' ) ); // true
console.log( ownsReturnCallOfOriginal( EP, 'tagName' ) ); // true
console.log( ownsAssigned.call( EP, 'tagName' ) ); // true
ownsBind
特别是和之间的有效区别是ownsReturnCallOfOriginal
什么,选择一种方法而不是其他两种方法的一些原因是什么?