isPrototypeOf 和hasOwnProperty 的区别

isPrototypeOf 是判断原生链上是否有该对象

1、isPrototypeOf

isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false。

格式如下:

object1.isPrototypeOf(object2);

object1是一个对象的实例;

object2是另一个将要检查其原型链的对象。

原型链可以用来在同一个对象类型的不同实例之间共享功能。

如果 object2 的原型链中包含object1,那么 isPrototypeOf 方法返回 true。

如果 object2 不是一个对象或者 object1 没有出现在 object2 中的原型链中,isPrototypeOf 方法将返回 false。

2.hasOwnProperty 判断对象是否有该属性.

hasOwnProperty判断一个对象是否有名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。

如果该属性或者方法是该 对象自身定义的而不是器原型链中定义的 则返回true;否则返回false;

格式如下:

object.hasOwnProperty(proName);

判断proName的名称是不是object对象的一个属性或对象。

扩展 js使用in和hasOwnProperty获取对象属性的区别

in判断的是对象的所有属性,包括对象实例及其原型的属性;

而hasOwnProperty则是判断对象实例的是否具有某个属性。

<script type="text/javascript">
function Person(){
}
Person.prototype.name = "allen"; var person = new Person();
console.log(person.hasOwnProperty("name")); //false
console.log("name" in person); //true
console.log(person.name); //"allen" person.name = "justforse";
console.log(person.hasOwnProperty("name")); //true
console.log("name" in person); //true
console.log(person.name); //"justforuse" delete person.name;
console.log(person.hasOwnProperty("name")); //false
console.log("name" in person); //true
console.log(person.name); //"allen"
</script>

JS isPrototypeOf 和hasOwnProperty 还有in的区别的更多相关文章

  1. js Object.prototype.hasOwnProperty() 与 for in 区别

    hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性 语法 obj.hasOwnProperty(prop) 参数 prop要检测的属性 [字符串] 名称或者 ...

  2. JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别

    JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...

  3. js中的hasOwnProperty()和isPrototypeOf()

    js中的hasOwnProperty()和isPrototypeOf() 这两个属性都是Object.prototype所提供:Object.prototype.hasOwnProperty()和Ob ...

  4. 【前端】js中new和Object.create()的区别

    js中new和Object.create()的区别 var Parent = function (id) { this.id = id this.classname = 'Parent' } Pare ...

  5. 面向对象的程序设计(二)理解各种方法和属性typeof、instanceof、constructor、prototype、__proto__、isPrototypeOf、hasOwnProperty

    //理解各种方法和属性typeof.instanceof.constructor.prototype.__proto__.isPrototypeOf.hasOwnProperty. //1.typeo ...

  6. JS中的== 、===的用法和区别。

    JS中的== .===的用法和区别.[转] == 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 . 而  === 和 !== 只有在相同类型下,才会比较其值 ======= ...

  7. [Ext JS 4] contentEL,renderTo, applyTo 释义与区别

    前言 若干年前,使用Ext JS 3 开发了一个系统. 随着Ext JS 4的出现,总是会看到或听到关于Ext 比较多的言论是 : Ext JS 4 较Ext JS 3 有较大的改变. Ext JS ...

  8. JS中三目运算符和if else的区别分析与示例

    本文是通过示例详细分析了JS中三目运算符和if else的区别,是篇非常不错的文章,这里推荐给大家.   今天写了一个图片轮播的小demo,用到了判断 先试了一下if else,代码如下: 复制代码代 ...

  9. js中callback.call()和callback()的区别

    js中callback.call()和callback()的区别在js中callback.call()和callback() 有什么区别,举个例子:function a(){alert('hello! ...

  10. 网站开发进阶(二十)JS中window.alert()与alert()的区别

    JS中window.alert()与alert()的区别 前言 alert与window.alert没什么区别,如果有人觉得有区别,那就来解释一下:所有以window.开始的语句,都可以直接把wind ...

随机推荐

  1. 探究C# dynamic动态类型本质

    本周在做接口动态传参的时候思考了个问题:如何把一个json字符串,转成C#动态类? 比如由 { 'userId': 100, 'id': 1, 'title': 'hello world', 'com ...

  2. Debian打开架构支持

    第一步检查内核有没有 AMD和i386 dpkg --list | grep linux-image  会出现现在电脑上的内核,可以看到支持的架构 dpkg --print-foreign-archi ...

  3. Git进阶命令-reset

    之前有关Git,写过一片文章: Git五个常见问题及解决方法 一.reset命令使用场景 有时候我们提交了一些错误的或者不完善的代码,需要回退到之前的某个稳定的版本,面对这种情况有两种解决方法: 解决 ...

  4. 投屏项目中Sink端CPU占用过高问题

    一.背景 今天来总结一下,自己在项目中遇到的一个CPU占用过高的问题,详细的结束从发现到定位在到解决问题的过程. 原因是性能测试那边提出了一个bug,就是在投屏过程中,平板端也就是Sink端功耗非常高 ...

  5. Linux环境下Minio的安装部署与启动教程(完整版)

    1.概述 MinIO是一个开源.分布式的对象存储系统,专为云原生环境设计.它提供了一个基于标准的Amazon S3兼容接口,使得开发者可以使用熟悉的API在私有云或边缘环境中部署和管理大规模非结构化数 ...

  6. ElasticSearch 准实时原理

    Elasticsearch 是一个基于 Lucene 库的搜索引擎.它提供了一个准实时的.分布式.支持多租户的全文搜索引擎. ----维基百科 那么问题来了,为啥 Elasticsearch 不是实时 ...

  7. 【AtCoder Beginner Contest 330)】[E - Mex and Update ] 线段树+二分

    本题可以用线段树+二分的方式实现.代码如下: import java.io.IOException; import java.io.InputStreamReader; import java.io. ...

  8. Linux 运维工程师面试真题-1-必会Linux 操作系统知识

    Linux 运维工程师面试真题-1-必会Linux 操作系统知识 运维的整个面试流程其实是非常繁杂的,为了方便大家准备,我们特地在这里给大家整理了 一些 Linux 系统运维相关的面试题,有些问题没有 ...

  9. (3)安装完python之后需要安装的Spyder集成开发环境教程

    步骤一: 首先,在网站上下载你所需要的压缩文件,网址为https://files.pythonhosted.org/packages/5e/a0/ab7f29e32479d15663eab9afd1d ...

  10. PDF的分割与合并

    1.进行PDF切割 python代码如下: # 20220521 # 1.选择要分割的文件 # 2.选择要保存的位置,分割为多个文件时,可自动用页码命名 # 3.输入要分割的页码,可以是一个范围1-2 ...