有两种写法如下:
obj.hasOwnProperty(props)
Object.prototype.hasOwnProperty.call(obj, props)
使用第二行代码的原因是因为:
- 对象可能来自null,那么它是没有hasOwnProperty属性的
- 对象的内部可能改写hasOwnProperty属性
- 对象的原型链上可能该属性被改写。
所以直接去对象的原型属性中调用是最保险的做法。
其他写法同理,如:
Object.prototype.tostring.call(obj)