`
deng131
  • 浏览: 675217 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hasOwnProperty和isPrototypeOf

阅读更多
hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。
in 操作检查对象中是否有名为 property 的属性。也可以检查对象的原型,判断该属性是否为原型链的一部分.
hasOwnProperty:
var obj = {a:1,b:2}
obj.hasOwnProperty('a')

isPrototypeOf:
function F(){}
var fn = new F()
F.prototype.isPrototypeOf(fn)



前者是判断对象中是否存在某个属性,后者是判断对象是否是原型链的对象。


那么isPrototypeO与instanceof又有什么区别?

function A () {
  this.a = 1;
}
function B () {
  this.b = 2;
}
B.prototype = new A();
B.prototype.constructor = B;

function C () {
  this.c = 3;
}
C.prototype = new B();
C.prototype.constructor = C;

var c = new C();

// instanceof expects a constructor function

c instanceof A; // true
c instanceof B; // true
c instanceof C; // true

// isPrototypeOf, can be used on any object
A.prototype.isPrototypeOf(c); // true
B.prototype.isPrototypeOf(c); // true
C.prototype.isPrototypeOf(c); // true


一段英文说明:
The difference between both is what they are, and how you use them, e.g. the isPrototypeOf is a function available on the Object.prototype object, it lets you test if an specific object is in the prototype chain of another, since this method is defined on Object.prototype, it is be available for all objects.

instanceof is an operator and it expects two operands, an object and a Constructor function, it will test if the passed function prototype property exists on the chain of the object (via the [[HasInstance]](V) internal operation, available only in Function objects).
[color=blue]

再来看代码:
var a = [];
Array.prototype.isPrototypeOf(a) //true
a instanceof Array               //true

明显却别是:instanceof是一个操作符。isPrototypeOf是一个函数。[/color]
2
1
分享到:
评论

相关推荐

    js中的hasOwnProperty和isPrototypeOf方法使用实例

    而hasOwnProperty和isPrototypeOf方法是与这两个概念紧密相关的两个非常重要的方法。接下来,我们将详细解释这两个方法的含义、用法和相关知识点。 首先,让我们来看一下hasOwnProperty方法。hasOwnProperty是...

    JS中的hasOwnProperty()和isPrototypeOf()属性实例详解

    hasOwnProperty()和isPrototypeOf()这两个属性都是Object.prototype所提供:Object.prototype.hasOwnProperty()和Object.prototype.isPropertyOf(),下面给大家介绍这两个属性的方法和使用,一起看下吧

    JavaScript isPrototypeOf和hasOwnProperty使用区别

    在JavaScript中,isPrototypeOf和hasOwnProperty是两个用于判断对象属性和原型链的重要方法。它们在处理对象属性的检查时各有侧重点,对于开发者来说,理解和掌握它们的区别对于提高代码的健壮性和性能都至关重要。 ...

    JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()

    JavaScript中的`hasOwnProperty()`, `propertyIsEnumerable()`和`isPrototypeOf()`是三个非常重要的对象属性和方法,它们在处理和检查对象属性时起到关键作用。接下来我们将深入理解这三个概念。 ### 1. `...

    浅析JavaScript中的对象类型Object_.docx

    因此,Object类型的属性和方法,如Constructor、hasOwnProperty、isPrototypeOf、toLocaleString、toString和valueOf,也适用于所有其他对象实例。 `Constructor`属性保存了创建对象的函数,这对于追踪对象的来源和...

    理解JAVASCRIPT中hasOwnProperty()的作用

    在JavaScript中,`hasOwnProperty()`是一个...同时,`Object`对象还有其他一些方法,如`isPrototypeOf()`, `propertyIsEnumerable()`, `toString()`, 和`valueOf()`等,它们共同构成了JavaScript中处理对象的基本工具。

    JavaScript中的原型prototype完全解析

    要理解JS中的prototype, 首先必须弄清楚... // [constructor, toString, toLocaleString, valueOf, hasOwnProperty, isPrototypeOf, // propertyIsEnumerable, __defineGetter__, __lookupGetter__, __defineSetter__,

    JavaScript源码大全 v1.0(CHM) .rar

    包括对象创建(字面量、构造函数、Object.create)、原型属性(__proto__、prototype)、原型方法(hasOwnProperty、isPrototypeOf、toString等)、继承机制(原型链、call、apply、bind、class语法)。 3. **数组...

    《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型

    Object类提供了多种属性和方法,如Prototype属性、Constructor属性、HasOwnProperty方法、IsPrototypeOf方法、PropertyIsEnumerable方法、ToString方法和ValueOf方法等。这些属性和方法定义了对象的基本行为和内存中...

    javascript计时器编写过程与实现方法_.docx

    hasOwnProperty 方法可以和 for..in 结合起来猎取对象自己的 key。 3. isPrototypeOf(Object)方法 isPrototype 方法接收一个对象,用来推断当前对象是否在传入的参数对象的原型链上。 ``` function MyObject() {}...

    2.05 面向对象编程应用.pdf

    2. hasOwnProperty: hasOwnProperty用于判断某一个属性到底是本地属性,还是继承自prototype对象的属性。 对象的冒充和克隆 对象的冒充和克隆是面向对象编程中的一些重要概念: 1. Object.create(): Object....

    javascript高级程序设计_3资料.pdf

    每个对象都有属性和方法,如Object类中的Constructor、Prototype、HasOwnProperty()、IsPrototypeOf()、PropertyIsEnumerable()、ToString()和ValueOf()等。Boolean类的valueOf()方法返回原始的布尔值,建议直接使用...

    javascript

    这里需要注意的是,`Object.prototype.isPrototypeOf()`和`Object.isPrototypeOf()`的区别。前者是检查`Object.prototype`是否在对象的原型链上,而后者则是检查`Object`构造函数是否是对象的构造函数。 以上就是...

    详解JavaScript中Hash Map映射结构的实现_.docx

    在JavaScript中,哈希映射(HashMap)是一种数据结构,用于高效地存储和检索键值对。虽然JavaScript的内置对象`Object`可以被用来模拟哈希映射的行为,但它并不是一个标准的哈希表,因此可能会导致一些潜在问题。...

    all-keys:获取对象的所有属性键,包括不可枚举和继承的

    获取对象的所有属性键,包括不可枚举和继承的 像一样,但是遍历原型链。 安装 $ npm install all-keys 用法 import allKeys from 'all-keys' ; Object . getOwnPropertyNames ( Symbol . prototype ) ; /* [ '...

    JavaScript中常用函数方法对象篇.docx

    JavaScript 中的对象是非常重要的概念,它提供了许多实用的函数方法来操作和处理对象。下面我们将介绍一些常用的对象函数方法。 Object.create() Object.create() 方法用于创建一个新的对象,该对象的原型将被设置...

    prototype+开发笔记

    此外,`Prototype`还涉及到`hasOwnProperty()`方法和`isPrototypeOf()`方法。`hasOwnProperty()`用于检查对象自身(非原型链)是否包含某个属性,而`isPrototypeOf()`则用来判断一个对象是否在另一个对象的原型链上...

Global site tag (gtag.js) - Google Analytics