/* 1.什么是isPrototypeOf属性 isPrototypeOf用于判断 一个对象是否是另一个对象的原型 */ /*...2.isPrototypeOf注意点 2.1只要调用者在传入对象的原型链上都会返回true */ /* 1.什么是isPrototypeOf...属性 isPrototypeOf用于判断 一个对象是否是另一个对象的原型 */ /* 2.isPrototypeOf注意点...class Cat{ name = "mm"; } console.log(Cat.prototype.isPrototypeOf(p));
JavaScript中isPrototypeOf函数详解 有时看一些框架源码的时候,会碰到 isPrototypeOf() 这个函数,那么这个函数有什么作用呢?...isPrototypeOf() isPrototypeOf() 是 Object函数(类)的下的一个方法,用于判断当前对象是否为另外一个对象的原型,如果是就返回 true,否则就返回 false。...(Number)); // true console.log(Object.prototype.isPrototypeOf(String)); // true console.log(Object.prototype.isPrototypeOf...(Boolean)); // true console.log(Object.prototype.isPrototypeOf(Array)); // true console.log(Object.prototype.isPrototypeOf...请看下面输出: console.log(Object.prototype.isPrototypeOf(Function)); // true console.log(Function.prototype.isPrototypeOf
1、isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false。 ...格式如下: object1.isPrototypeOf(object2); object1是一个对象的实例; object2是另一个将要检查其原型链的对象。...如果 object2 的原型链中包含object1,那么 isPrototypeOf 方法返回 true。 ...如果 object2 不是一个对象或者 object1 没有出现在 object2 中的原型链中,isPrototypeOf 方法将返回 false。
我们可以通过isPrototypeOf()方法实现。...var obj = []; Array.prototype.isPrototypeOf(obj); // true isPrototypeOf() 方法用于测试一个对象是否存在于另一个对象的原型链上。...我们依旧可以通过isPrototypeOf()方法实现判断一个数据是不是对象。...Array.prototype.isPrototypeOf([]); // true Array.prototype.isPrototypeOf({}); // false Object.prototype.isPrototypeOf...([]); // true Object.prototype.isPrototypeOf({}); // true 注意:isPrototypeOf 和 instanceof operator 是不一样的
console.log("_child instanceof Parent: " + ( _child instanceof Parent)); console.log("Child.prototype.isPrototypeOf...(_child): " + Child.prototype.isPrototypeOf(_child)); console.log("Parent.prototype.isPrototypeOf(_child...): " + Parent.prototype.isPrototypeOf(_child)); console.log("_child.hasOwnProperty('Share'): " + _child.hasOwnProperty...console.log("_child instanceof Parent: " + (_child instanceof Parent)); console.log("Child.prototype.isPrototypeOf...(_child): " + Child.prototype.isPrototypeOf(_child)); console.log("Parent.prototype.isPrototypeOf(_child
instanceof D; // false,因为 D.prototype 不在 o 的原型链上 o instanceof Object; // true,因为 Object.prototype.isPrototypeOf...isPrototypeOf isPrototypeOf() 可以用于测试一个对象是否存在于另一个对象的原型链上。...(baz)); // true console.log(Bar.prototype.isPrototypeOf(baz)); // true console.log(Foo.prototype.isPrototypeOf...(baz)); // true console.log(Object.prototype.isPrototypeOf(baz)); // true 如果要用 isPrototypeOf 来判断传入参数是否为数组...,可以这样用: let arr = []; console.log(Array.prototype.isPrototypeOf(arr)); // true Object.prototype.toString
obj2,//Object typeof obj3 //Date ); //方法一: 判断爹 console.log( Array.prototype.isPrototypeOf...(obj1), //true Array.prototype.isPrototypeOf(obj2), //false Array.prototype.isPrototypeOf...(obj3), //false Array.prototype.isPrototypeOf(obj4), //true ); //方法一: 判断妈
通过 Array.prototype.isPrototypeOf// isPrototypeOf用于判断 一个对象是否是另一个对象的原型// 只要调用者在传入对象的原型链上都会返回 true let...a = [1,2,3]Array.prototype.isPrototypeOf(a)true
2; } f(); 输出undefine,JS变量是在预编译期定义的,所以一开始全局变量x 和 局部变量x都已经被解析,函数体内此时的x的值是undefined. 3. hasOwnProperty isPrototypeOf...var o = new Object(); o.name = 1; alert( o.hasOwnProperty('name') ); // 输出 true 表示name是o的实际属性,非继承属性. isPrototypeOf...( obj2.isPrototypeOf( obj1 ) ) 判断obj2是否在obj1的原型链上; function o(){ // } var obj = new o(); alert( o.prototype.isPrototypeOf
if(a.something) { a.something(); // something()并不一定在a自身上 } 方式三:isPrototypeOf()、getPrototypeOf() 建议使用方式三...Foo.prototype.isPrototypeOf(a); // 不需要间接引用函数Foo,它的prototype属性会自动访问。...(3)区别 isPrototypeOf()方法可以判断对象间的关系。 b是否出现在c的[[prototype]]链中?...b.isPrototypeOf(c); 示例: function Foo(){} var a = new Foo(); console.log(a instanceof Foo); // true...console.log(Foo.prototype.isPrototypeOf(a)); // true var b = {}; var c = Object.create(b); console.log
() 方法来确定原型和实例的关系console.log(employee.prototype.isPrototypeOf(instance)); // trueconsole.log(staff.prototype.isPrototypeOf...(instance)); // trueconsole.log(Object.prototype.isPrototypeOf(instance)); // true 存在的问题 原型链实现继承最大的问题是...小结 基于构造函数和原型链 通过 hasOwnProperty() 方法来确定自身属性与其原型属性 通过 isPrototypeOf() 方法来确定原型和实例的关系 在实例中可以修改原型中引用类型的值...() 方法来确定原型和实例的关系console.log(staff.prototype.isPrototypeOf(instanceOne)); // true 开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式...() 方法来确定原型和实例的关系console.log(staff.prototype.isPrototypeOf(instanceOne)); // true super 关键字,它在这里表示父类的构造函数
p]);//1 2 } 拓展1: 每个对象都有与之相关的原型(prototype)、类(class)、可扩展性(extensible) 要检测一个对象是否是另一个对象的原型(或处于原型链中),可以使用isPrototypeOf...()方法 var p = {x:1}; //p原型对象继承自Object.prototype var o = Object.create(p); //o对象继承自p console.log(p.isPrototypeOf...(o));//true console.log(Object.prototype.isPrototypeOf(o));//true console.log(Object.prototype.isPrototypeOf...(p));//true 当然,isPrototypeOf()方法和instanceof运算符非常类似 instanceof运算符希望它的左操作数是一个对象,右操作数标识对象的类。
方案三:原型prototype + isPrototypeOf()方法 Array.prototype.isPrototypeOf(variable) isPrototypeOf() 函数 : 用于指示对象是否存在于一个对象的原型链中...isPrototypeOf的字面意思也就是a是不是b的原型。 看上图就知道了,Array就是变量m的原型。所以用这个方法就能判断出来。 对比一个类型为“纯”Object的变量打印出来的信息: ?
n1 instanceof Number,n1 instanceof Object);//true true 8 9 // o8 instanceof Obj3等同于Obj3.prototype.isPrototypeOf...10 console.log(Obj3.prototype.isPrototypeOf(o8));//true 11 //可以翻译成Obj3构造函数的prototype(原型)属性是o8的原型对象 12...Object.prototype.isPrototypeOf:判断是否是某个对象的原型对象 1 console.log(o10.isPrototypeOf(o11));//true;o10是o11的原型对象...2 console.log(o11.isPrototypeOf(o10)); 3 console.log(Object.prototype.isPrototypeOf(null));//除了null或者...Object.create(null)生成对象,其它对象的原型对象往原型链回溯一定可以回溯到Object.prototype 4 console.log(Object.prototype.isPrototypeOf
方法2:用isPrototypeOf方法来判断原型链中是否有某原型对象,方法调用者必然是原型对象,而参数是在该原型对象所处原型链位置之前的实例或者原型对象时时会返回true。...方法来判断 // 调用者原型对象参数是实例 console.log(SubType.prototype.isPrototypeOf(instance)); // true console.log(SuperType.prototype.isPrototypeOf...(instance)); // true console.log(Object.prototype.isPrototypeOf(instance)); // true // 调用者原型对象参数是原型对象...(instance1)); // true console.log(SuperType.prototype.isPrototypeOf(instance1)); // false 方法都定义在构造函数内部...console.log(superObj.isPrototypeOf(subObj)); // true 缺点: 由于引用属性是被共享的,对引用属性的改动会影响到其他对象。
虽然不是所有实现都对外暴露了[[prototype]],但是可以使用isPrototypeOf()方法,确定两个对象是否共享一个原型(其实这个原型就是一个隐藏类,对隐藏类不了解的可以看一下我的另一篇文章...:垃圾回收与内存管理 4.3节),本质上,isPrototypeOf()会在传入参数的[[prototype]]指向调用它的对象时,返回true,即: Persion.prototype.isPrototypeOf
第二种是使用 isPrototypeOf() 方法, 同样只要是原型链中出现过的原型,isPrototypeOf() 方法就会返回true, 如下所示....alert(Object.prototype.isPrototypeOf(instance));//true alert(Father.prototype.isPrototypeOf(instance)...);//true alert(Son.prototype.isPrototypeOf(instance));//true复制代码 原理同上....而且, instanceof 和 isPrototypeOf( )也能用于识别基于组合继承创建的对象....于此同时,原型链还能保持不变; 因此还能正常使用 instanceof 和 isPrototypeOf() 方法.
speakName2()// speakName2 c1.speakName3()// speakName3 c1.speakName4()// speakName4 // instanceof isPrototypeOf... 无法判断实例和类型的关系 console.log(Father.prototype.isPrototypeOf(c1))// false console.log(c1 instanceof Father
__proto__); // Hero { age: 18 } isPrototypeOf()方法 isPrototypeOf() 判断指定对象是否是另一个对象的原型。...function Hero() {} // 将对象obj赋值给构造函数Hero的原型 Hero.prototype = obj; // 通过构造函数创建对象 var hero = new Hero(); // isPrototypeOf...() 判断指定对象是否是另一个对象的原型 console.log(obj.isPrototypeOf(hero)); // true console.log(hero.isPrototypeOf(obj
领取专属 10元无门槛券
手把手带您无忧上云