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主要用于判断对象是否存在于原型链上。