Object中的三个常见方法(学习笔记)

1.hasOwnProperty---判定属性是否属于对象
 
//构造函数
    function Person(name, sex) {
      this.name = name;
      this.sex = sex;
    }
    //原型添加方法
    Person.prototype.height = "170";
    Person.prototype.eat = function () {
      console.log("吃好吃的");
    };
    //构造函数
    function Student(age) {
      this.age = age;
    }
    //有继承了---原型指向改变了
    Student.prototype = new Person("小明");
    //对象
    var stu = new Student(10);
    //返回的是布尔值,判断该属性是不是当前对象的
    console.log(stu.hasOwnProperty("age"));
 
 
    //因为js中并没有对hasOwnProperty方法做保护,所以,我们可以私自更改这个方法
    var myObj={
      age:20,
      hasOwnProperty:function (str) {
        return false;
      }
    };
    //这个方法是判断有没有这个属性的
    console.log(myObj.hasOwnProperty("age"));//false
    //此时这个方法不是很容易辨别属性是不是属于某个对象的了
 
    //如果担心上面的问题,此时这么做就可以了
    console.log(Object.prototype.hasOwnProperty.call(myObj,"age"));
 
2.判断一个对象是不是另一个实例对象的原型对象
 
    function Teacher() {
 
    }
    var p=new Person("小明",20);//实例对象
    Teacher.prototype=p;//改变构造函数的原型指向
    var t=new Teacher();//实例对象
    //用来判断当前的对象是不是另一个实例对象的原型
    console.log(p.isPrototypeOf(t));//true
 
3.判断这个属性是不是当前对象可以枚举的属性
条件:
  • 这个属性必须是属于实例对象的,并且不属性原型中
  • 这个属性必须是可枚举的,也就是自定义的属性
  • 如果对象没有指定的属性,该方法返回的是false
    //能够被for-in遍历的属性是可枚举的
    var p1=new Person("小明",10);
    //遍历这个对象
    for(var key in p1){
      console.log(key);
    }
    //判断这个属性是不是当前对象可以枚举的属性
    console.log(p1.propertyIsEnumerable("weight")); //false
posted @ 2019-10-23 14:55  Katherine蓝羽  阅读(66)  评论(0)    收藏  举报