其他分享
首页 > 其他分享> > hasOwnProperty和in和instanceof的使用

hasOwnProperty和in和instanceof的使用

作者:互联网

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")); //true

2.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