js对象中的属性可以分为两类,一类是对象自身定义的属性,另一类是从原型链中继承而来的属性。js属性对象的hasOwnProperty()方法用于判断一个属性是否是对象自身定义的属性,其用法如下:
对象.hasOwnProperty(属性名称)
其中,对象为需要检查的对象,属性名称是需要检查的属性,如果该属性是对象自身定义的属性,则返回true
,否则返回false
。
下面通过两条示例来说明该方法的使用。
示例1:
let object1 = {
name: "小明",
age: 20
};
console.log(object1.hasOwnProperty("name")); // true
console.log(object1.hasOwnProperty("toString")); // false
在上述示例中,定义了一个名为object1
的对象,其中有两个属性,一个是自身定义的name
属性,另一个是从对象原型继承而来的toString
属性。接下来通过hasOwnProperty()
方法判断name
和toString
是否为自身定义的属性,打印结果如下:
true
false
可以看到,对于自身定义的name
属性,其返回结果为true
,而对于从原型链中继承而来的toString
属性,其返回结果为false
,说明该方法可以很好地区分实例属性和原型属性。
示例2:
function Student(name, age) {
this.name = name;
this.age = age;
}
Student.prototype.sayHello = function() {
console.log(`你好,我叫${this.name},今年${this.age}岁了。`);
}
let stu1 = new Student("小明", 20);
console.log(stu1.hasOwnProperty("name")); // true
console.log(stu1.hasOwnProperty("sayHello")); // false
在上述示例中,定义了一个名为Student
的构造函数,并通过原型链为其定义了一个方法sayHello
。接下来创建了一个名为stu1
的对象,并通过hasOwnProperty()
方法判断stu1
的属性name
和sayHello
是否是自身定义的属性,打印结果如下:
true
false
可以看到,对于自身定义的属性name
,其返回结果为true
,而对于从原型链中继承而来的属性sayHello
,其返回结果为false
,这再一次证明了该方法可以区分实例属性和原型属性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js属性对象的hasOwnProperty方法的使用 - Python技术站