isPrototypeOf用于检测一个对象是否在另一个对象的原型链上,语法为prototypeObj.isPrototypeOf(instanceObj),返回布尔值;两参数必须为对象,顺序不可颠倒,且支持任意对象(不限于构造函数prototype)作为原型候选。

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
<p><strong>isPrototypeOf</strong> 是 JavaScript 中用于检测一个对象是否在另一个对象的原型链上的方法。它不判断“是不是直接原型”,而是看“是不是原型链中的一环”。</p>
<H3>基本用法和返回值</H3>
<p>语法是:<code>prototypeObj.isPrototypeOf(instanceObj)</code>,其中 <code>prototypeObj</code> 是待检测的原型对象,<code>instanceObj</code> 是待检查的实例对象。返回布尔值:<code>true</code> 表示 <code>prototypeObj</code> 出现在 <code>instanceObj</code> 的原型链中,否则为 <code>false</code>。</p>
<p>注意:两个参数都必须是对象,否则会抛出 TypeError。</p>
<H3>常见使用场景</H3>
<ul>
<li>检查自定义构造函数的原型是否被继承</li>
<li>验证某个内置对象(如 Array、Object)是否在目标对象的原型链上</li>
<li>在多层继承关系中确认原型归属(比如子类 → 父类 → Object)</li>
</ul>
<H3>实际例子说明</H3>
<p>例如:</p>
<p><code>function Animal() {}</code><br>
<code>function Dog() {}</code><br>
<code>Dog.prototype = Object.create(Animal.prototype);</code><br>
<code>Dog.prototype.constructor = Dog;</code><br>
<code>const myDog = new Dog();</code></p>
<p>这时:<br>
<code>Animal.prototype.isPrototypeOf(myDog)</code> → <code>true</code><br>
<code>Dog.prototype.isPrototypeOf(myDog)</code> → <code>true</code><br>
<code>Object.prototype.isPrototypeOf(myDog)</code> → <code>true</code></p>
<p>但:<br>
<code>myDog.isPrototypeOf(Animal.prototype)</code> → <code>false</code>(方向不能反)</p>
<H3>和 instanceof 的区别</H3>
<p><code>instanceof</code> 检查的是构造函数的 <code>prototype</code> 是否在实例的原型链上,而 <code>isPrototypeOf</code> 直接以任意对象为起点去查它是否在另一对象的原型链里。两者逻辑相近,但调用方式和适用粒度不同:<br>
- <code>myDog instanceof Dog</code> 等价于 <code>Dog.prototype.isPrototypeOf(myDog)</code><br>
- <code>isPrototypeOf</code> 更灵活,可以传入非构造函数的普通对象作为原型候选</p>

















