标签:instanceof console log hasOwnProperty 使用 myInstanceof 属性 true name
1.hasOwnProperty方法是用来检测当前属性是否为对象的私有属性(不仅要有这个属性,而且必须还是私有的才可以),该方法仅用于判断自身对象,不会查找原型链。
如下案例
function B() { this.age = 18; } B.prototype.name = "b";//在原型对象上添加name属性 const b = new B(); console.log(b.hasOwnProperty("name")); //false console.log(b.hasOwnProperty("age")); //true b.name = "c";//在实例本身添加name属性 console.log(b.hasOwnProperty("name")); //true2.in:检测当前对象是否存在某个属性(不管当前这个属性是对象的私有属性还是公有属性,只要有结果就是TRUE)
function B() { this.age = 18; } B.prototype.name = "b"; const b = new B(); console.log("name" in B); //true console.log("age" in B); //false console.log("name" in b); //true console.log("age" in b); //true
3.instanceof方法是判断某个对象是否由某个构造函数构建。
如A instanceof B,判断A对象是否由B构造函数创建。
通过__proto__一层层向上找,直到找到或找不到
const a = {}; function B() {} function myInstanceof(target, obj) { let p = target; while (p) { if (p === obj.prototype) { return true; } p = p.__proto__; } return false; } let b = new B(); console.log(myInstanceof(a, Function)); //false console.log(myInstanceof(a, Object)); //true console.log(myInstanceof(B, Function)); //true console.log(myInstanceof(B, Object)); //true console.log(myInstanceof(b, B)); //true console.log(myInstanceof(b, Function)); //false console.log(myInstanceof(b, Object)); //true
一般来说,js中的对象最终都是Object构造出来的。
因此 xxx instanceof Object的结果都是true.
标签:instanceof,console,log,hasOwnProperty,使用,myInstanceof,属性,true,name 来源: https://www.cnblogs.com/lijun12138/p/16442470.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。