跳到主要内容

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对象自身有prop1prop2两个属性,所以obj.hasOwnProperty('prop1')obj.hasOwnProperty('prop2')都返回true。然而,obj对象并没有prop3这个属性,虽然它的原型链上有一个prop3属性,但是obj.hasOwnProperty('prop3')仍然返回false,因为它只检查对象自身的属性,而不考虑原型链。