我正在尝试这个函数来查看不同的对象之间是否有关系,所以我尝试了:
var o={name:'abc'};
var o2=o;
console.log(o.isPrototypeOf(o2));
console.log(o2.isPrototypeOf(o));
嗯,它打印了 2 个错误。我觉得奇怪的是,“原型(prototype)”是每个函数/对象的属性/功能,那么JS如何判断一个对象是否是另一个对象的原型(prototype)呢?
我也尝试过:
var Person=function(){
name='abc',
age=30
};
var o1=new Person();
var o2=new Person();
console.log(o1.isPrototypeOf(o2));
console.log(o2.isPrototypeOf(o1));
它再次打印 2 个 false,而我期望 2 个 true。
最佳答案
要使 o
成为 o2
的原型(prototype),需要从原型(prototype)为 o 的构造函数构造
。换句话说,o2
对象o2
需要正确继承 o
。
仅仅为变量分配一个对象或两个对象相似是不够的。一个对象必须从另一个对象继承。
所以从经典意义上来说,这一定会发生:
var o = {};
var OConstructor = function () {};
OConstructor.prototype = o;
var o2 = new OConstructor();
o.isPrototypeOf(o2); // true
在现代代码中,您还可以使用Object.create()
进行继承:
var o = {};
var o2 = Object.create(o);
o.isPrototypeOf(o2); // true
关于javascript - 如何使Javascript "isPrototypeOf"函数返回true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38786736/