一、如何判断对象的属性存在于实例对象中还是原型对象中 ------ 2019-06-03

一、知识储备:
1、hasOwnProperty() 方法,可以用来检测实例对象使用的属性是存在于实例对象中还是存在于原型对象中;

      person1.hasOwnProperty("name")  实例对象调用该方法,将属性名传入该方法,
      (1)属性是对象本身的,返回true,
      (2)属性存在于原型对象,返回false;

2、in 操作符的作用:
(1)官方解释:in操作符会在通过对象能够访问给定属性时返回 true,无论该属性存在于实例中还是原型中。
(2)大白话:只要实例对象有该属性,不论是存在于实例对象本身还是原型对象中,都会返回true,这个属性可以说是用来检测,实例对象中是否有该属性;
(3)用法:"name" in person1 属性 in 实例对象;

二、同时使用这两个语法,检测属性存在于实例中还是原型中

function hasPrototypeProperty(object, name){ 
    return !object.hasOwnProperty(name) && (name in object); 
}
hasOwnProperty() 方法返回true,说明属性不是存在于实例对象中,in操作符返回true,说明属性存在,方法返回true说明属性存在于原型对象中;

转载于:https://www.jianshu.com/p/b6d37c1bb9d7

猜你喜欢

转载自blog.csdn.net/weixin_34138521/article/details/91168852