zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JS isPrototypeOf()方法:检测一个对象是否存在于另一个对象的原型链中

JS方法对象 一个 是否 检测 存在 原型
2023-06-13 09:12:01 时间
JavaScript isPrototypeOf() 是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上,所有 Object 的实例对象都会继承 isPrototypeOf() 方法。

isPrototypeOf() 方法用来检测一个对象是否存在于另一个对象的原型链中,如果存在就返回 true,否则就返回 false。

isPrototypeOf() 的语法格式如下:

prototypeObject.isPrototypeOf(object);

参数说明:object 参数是 Object 类型的一个对象,将对其原型链进行检查。

返回值:isPrototypeOf() 函数的返回值为 Boolean 类型。如果 object 的原型链中存在 prototypeObject 对象,那么返回 true;如果 object 不是对象,或者 object 的原型链中不存在 prototypeObject 对象,那么返回 false。

在 JavaScript 中,Function 对象预定义了 prototype 属性,该属性指向一个原型对象。当定义构造函数时,系统会自动创建一个对象,并传递给 prototype 属性,这个对象被称为原型对象。原型对象可以存储结构类型的原型属性,以便于所有实例对象共享。

下面代码为自定义类型函数定义两个原型成员。


var f = function () {} //定义函数

f.prototype = { //函数的原型对象

 a : 1,

 b : function () {

 return 2;

console.log(f.prototype.a);  //读取函数的原型对象的属性a,返回1

console.log(f.prototype.b());  //读取函数的原型对象的属性b,返回2

当使用 new 运算符调用函数时,就会创建一个实例对象,这个实例对象将继承构造函数的原型对象中所有的属性。


var o = new f(); //实例对象

console.log(o.a); //访问原型对象的属性

console.log(o.b()); //访问原型对象的属性

为了方便判定,Object 对象定义了 isPrototypeOf() 方法,该方法可以检测一个对象的原型对象。

通过下面示例,可以判断 f.prototype 就是对象 o 的原型对象,因为其返回值为 true。


var b = f.prototype.isPrototypeOf(o);

console.log(b);

下面示例演示了各种特殊对象的原型对象。

1) 函数的原型对象可以是 Object.prototype,或者是 Function.prototype。


var f = function () {}

console.log(Object.prototype.isPrototypeOf(f)); //返回true

console.log(Function.prototype.isPrototypeOf(f)); //返回true

2) Object 和 Function 对象的原型对象比较特殊。


console.log(Function.prototype.isPrototypeOf(Object)); //返回true

console.log(Object.prototype.isPrototypeOf(Function)); //返回true

3) Object.prototype 和 Function.prototype 的原型对象不是 Object.prototype,Function.prototype 的原型对象可以是 Function.prototype,但是 Object.prototype 的原型对象绝对不是 Function.prototype。


console.log(Object.prototype.isPrototypeOf(Object.prototype)); //返回false

console.log(Object.prototype.isPrototypeOf(Function.prototype)); //返回true

console.log(Function.prototype.isPrototypeOf(Function.prototype)); //返回false

console.log(Function.prototype.isPrototypeOf(Object.prototype)); //返回false

23185.html

javaJavaScript