var obj={} …….. obj.hasOwnProperty("val")中hasOwnProperty的作用是?
名字 | 详细解释 | 简单理解 |
---|---|---|
属性 | ||
constructor | 指向Object构造函数 | 构造用 |
proto | 指向原型对象 | 原型链 |
静态方法 | ||
assign | 通过复制一个或者多个对象,创建一个对象 | 浅拷贝 |
create | 使用指定的原型对象和属性创建一个新对象 | |
defineProperty | 给对象添加一个属性并指定该属性的配置 | 数据劫持 |
keys | 返回一个包含所有给定对象自身可枚举属性名称是数组 | |
values | 返回给定对象自身可枚举的数组 | |
实例方法 | ||
hasOwnProperty | 返回一个布尔值,看对象自身是否包含指定属性 | |
isPrototypeOf | 返回一个布尔值,看当前对象是否在指定对象的原型链上 | |
toString | 返回字符串,懂得都懂 |
hasOwnProperty和isPrototypeOf是JavaScript中的两个方法,用于判断对象之间的属性和原型关系。它们的区别如下:
const obj = {a: 1, b: 2}; obj.hasOwnProperty("a"); // true obj.hasOwnProperty("c"); // false obj.hasOwnProperty("toString"); // false,toString是继承自Object.prototype的
const obj1 = {a: 1, b: 2}; const obj2 = Object.create(obj1); // obj2的原型是obj1 const obj3 = Object.create(obj2); // obj3的原型是obj2 obj1.isPrototypeOf(obj2); // true obj1.isPrototypeOf(obj3); // true,obj1也是obj3的原型 obj2.isPrototypeOf(obj3); // true obj3.isPrototypeOf(obj2); // false
总结来说,hasOwnProperty和isPrototypeOf都是用于判断对象之间的关系的方法,但它们的侧重点不同。hasOwnProperty主要用于判断对象是否具有自有属性,而isPrototypeOf主要用于判断对象是否存在于原型链上。