JS原型链总结:构造函数、实例、原型对象之间的关系
程序员文章站
2022-04-18 20:40:46
构造函数、实例、原型对象之间的关系
instanceof原理
检测对象的原型对象与构造函数的原型是否是同一个对象,如果不是,根据对象的原型链依次查找,直到相等,或者到达原型链顶端。
上面文字可能...
构造函数、实例、原型对象之间的关系
instanceof原理
检测对象的原型对象与构造函数的原型是否是同一个对象,如果不是,根据对象的原型链依次查找,直到相等,或者到达原型链顶端。
上面文字可能表达的不是很清楚,下面上代码:
function myinstanceof (obj, constructor) { // 对象的原型对象 let objproto = object.getprototypeof(obj); // 构造函数的原型对象 let constructorproto = constructor.prototype; if (objproto === constructorproto) { return true; } else { while (objproto = object.getprototypeof(objproto)) { if (objproto === constructorproto) { return true; } } return false; } } function person (name) { this.name = name; } person.prototype.hi = function () { console.log(`hi, my name is ${this.name}`); }; let p = new person('monkey'); p.hi(); console.log('------------------------------------------------'); let other = {name: 'lucy'}; console.log(`p is myinstanceof person : ${myinstanceof(p, person)}`); console.log(`p is myinstanceof object : ${myinstanceof(p, object)}`); console.log(`other is myinstanceof person : ${myinstanceof(other, person)}`); console.log(`other is myinstanceof object : ${myinstanceof(other, object)}`); console.log('------------------------------------------------'); console.log(`p is instanceof person : ${myinstanceof(p, person)}`); console.log(`p is instanceof object : ${myinstanceof(p, object)}`); console.log(`other is instanceof person : ${myinstanceof(other, person)}`); console.log(`other is instanceof object : ${myinstanceof(other, object)}`);
使用myinstanceof和instanceof的结果是一致的
推荐阅读
-
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
-
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
-
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
-
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
-
JS高级---构造函数,实例对象和原型对象,三者关系
-
JavaScript中构造函数与原型链之间的关系详解
-
JS 显示原型、隐式原型与原型链 / 构造函数、实例、实例原型之间的关系
-
构造函数与实例对象和原型对象三者间的关系
-
JS中构造函数的方法定义在原型对象里
-
JS对象和原型以及构造函数(代码实例)