js中如何判断属性是对象实例中的属性还是原型中的属性

ECMAScript5中的hasOwnProperty()方法,用于判断只在属性存在与对象实例中的时候,返回true,in操作符只要通过对象能访问到属性就返回true。

因此只要in操作符返回true而hasOwnProperty()返回false,就可以确定属性是原型中的属性。

所以有如下函数:

function hasPrototypeProperty(obj, name) {
    return !obj.hasOwnProperty(name) && (name in obj);
}

当属性存在对象实例上的时候,函数返回false,表示该属性不是存在原型上,当属性存在原型上的时候,函数返回true。

原文地址:https://www.cnblogs.com/jsydb/p/12240072.html

时间: 2024-10-11 17:40:36

js中如何判断属性是对象实例中的属性还是原型中的属性的相关文章

Python笔记(七):字典、类、属性、对象实例、继承

(一)  简单说明 字典是Python的内置数据结构,将数据与键关联(例如:姓名:张三,姓名是键,张三就是数据).例如:下面这个就是一个字典 {'姓名': '张三', '出生日期': '2899-08-12', '成绩': ['3.21', '3.10', '3.01']} 创建字典.添加数据.访问字典数据的方式如下: d = {}  #直接用{}创建字典 f = dict() #通过工厂函数dict()创建字典 #通过下面的方式添加数据 d['姓名'] = '张三' d['出生日期'] = '

Java中如何判断两个对象是否相等(Java equals and ==)

原文https://www.dutycode.com/post-140.html 如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解. 从以下几个点来理解equals和hashCode方法: 1.equals的作用及与==的区别. 2.hashcode的作用及与equals的关系. 1.equals的作用及与==的区别. equals被用来判断两个对象是否相等. equals通常用来比较两个对象的内容是否相等,==用来比较两个对象的地址是否相等. e

Java中的mutable和immutable对象实例讲解

1.mutable(可变)和immutable(不可变)类型的区别 可变类型的对象:提供了可以改变其内部数据值的操作,其内部的值可以被重新更改. 不可变数据类型:其内部的操作不会改变内部的值,一旦试图更改其内部值,将会构造一个新的对象而非对原来的值进行更改. 2.mutable和immutable类型的优缺点   mutable immutable 优点 可变类型会减少数据的拷贝次数,从而其效率 要高于immutable 由于内部数据不可变,所以对其频发修改会产生大量的临时拷贝,浪费空间 缺点

js中如何判断一个DOM对象是否存在?

<div id="div1"></div> if(!!document.getElementById("div1"))

React 深入系列1:React 中的元素、组件、实例和节点

文:徐超,<React进阶之路>作者 授权发布,转载请注明作者及出处 React 深入系列,深入讲解了React中的重点概念.特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React. React 中的元素.组件.实例和节点,是React中关系密切的4个概念,也是很容易让React 初学者迷惑的4个概念.现在,老干部就来详细地介绍这4个概念,以及它们之间的联系和区别,满足喜欢咬文嚼字.刨根问底的同学(老干部就是其中一员)的好奇心. 元素 (Element) Rea

深入解析React中的元素、组件、实例和节点

React 深入系列,深入讲解了React中的重点概念.特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React. React 中的元素.组件.实例和节点,是React中关系密切的4个概念,也是很容易让React 初学者迷惑的4个概念.现在,我就来详细地介绍这4个概念,以及它们之间的联系和区别,满足喜欢咬文嚼字.刨根问底的同学的好奇心. 元素 (Element) React 元素其实就是一个简单JavaScript对象,一个React 元素和界面上的一部分DOM对应

jQuery的Event对象(实例)。

which属性用于返回触发当前事件时按下的键盘按键或鼠标按钮. 对于键盘和鼠标事件,该属性用于确定你按下的是哪一个键盘按键或鼠标按钮. which属性对DOM原生的event.keyCode和event.charCode进行了标准化. 适用的事件类型主要有键盘事件:keypress.keydown.keyup,以及鼠标事件:mouseup.mousedown. 该属性属于jQuery的Event对象(实例). jQuery 1.1.3 新增该属性. eventObject.which 返回值 w

在C#中如何判断线程当前所处的状态

在C#中如何判断线程当前所处的状态 老帅   在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象,因此判断线程当前的状态必须用bitmask按位运算来达到判断目的,不能直接使用相等来判断. 定义ThreadState如下:      1.判断线程是否处于取消状态 A.错误的判断 (MyThread.ThreadState == ThreadState.AbortRequested) B.正确的判断     (MyThread.Thread

怎么判断两个对象是否完全相等

大家都知道,js没办法判断对象是否相等,因为在js引擎看来,不同的对象实例就是不相等,因此我写了个方法来判断是否对象是否相等 思路就是不对递归,遇到不想等的就设置为false: function evalObj(obj1,obj2){ let isEval = true; _next(obj1,obj2); //再反向next是 为了解决 形如evalObj({a:123},{a:123,b:{c:123}})返回true的问题 _next(obj2,obj1); function _next(