JavaScript中有一个函数,执行直接对象查找时,它始终不会查找原型,这个函数是什么?
参考答案:
在JavaScript中,Object.prototype.hasOwnProperty()
方法是一个不会查找原型链的函数,它用于检查一个对象是否拥有某个特定的属性,而不考虑其原型链上是否存在该属性。
这个方法接收一个字符串作为参数,该字符串是你要检查的属性的名称。如果对象拥有该属性(不论该属性是对象自身的属性还是从其原型链上继承的属性),则返回true
;否则返回false
。
下面是一个例子:
let obj = {
prop1: 'value1',
prop2: 'value2'
};
console.log(obj.hasOwnProperty('prop1')); // 输出:true
console.log(obj.hasOwnProperty('prop2')); // 输出:true
console.log(obj.hasOwnProperty('prop3')); // 输出:false
// 假设原型链上有一个prop3属性
Object.prototype.prop3 = 'value3';
console.log(obj.prop3); // 输出:value3
console.log(obj.hasOwnProperty('prop3')); // 输出:false
在上面的例子中,我们可以看到obj
对象自身有prop1
和prop2
两个属性,所以obj.hasOwnProperty('prop1')
和obj.hasOwnProperty('prop2')
都返回true
。然而,obj
对象并没有prop3
这个属性,虽然它的原型链上有一个prop3
属性,但是obj.hasOwnProperty('prop3')
仍然返回false
,因为它只检查对象自身的属性,而不考虑原型链。