美文网首页
hasOwnProperty和in属性操作

hasOwnProperty和in属性操作

作者: 码农的世界你不懂 | 来源:发表于2017-02-25 14:58 被阅读0次

in操作符

用来检查对象中是否存在某个属性(不区分实例属性和原型属性)

<script>

    //01 提供一个构造函数
    function Person(name) {
        this.name = name;
    }

    //02 设置构造函数的原型对象的属性
    Person.prototype.sayHello = function () {
        console.log("hello");
    }

    //03 创建对象
    var p1 = new Person();

    //04 使用in关键字判断对象中是否存在以下属性:name age sayHello
    console.log("age" in p1);       //false
    console.log("name" in p1);      //true
    console.log("sayHello" in p1);  //true

</script>

hasOwnProperty方法

<script>

    //01 提供一个构造函数
    function Person(name) {
        this.name = name;
    }

    //02 设置构造函数的原型对象的属性
    Person.prototype.sayHello = function () {
        console.log("hello");
    }

    Person.prototype.des = "默认的描述信息";

    //03 创建对象
    var p1 = new Person();

    //04 使用hasOwnProperty方法判断该属性是否是对象的实例属性
    console.log(p1.hasOwnProperty("age"));       //false
    console.log(p1.hasOwnProperty("name"));      //true
    console.log(p1.hasOwnProperty("sayHello"));  //false
    console.log(p1.hasOwnProperty("des"));       //false

</script>
  • 说明:in关键字用来检查对象中是否存在指定的属性(包含实例属性和原型属性)
    对象的hasOwnProperty方法用来检查对象中是否存在指定的属性(只检查实例属性)

  • 要求:检查对象中是否存在某个原型属性(注意:该原型属性没有对应的实例属性)

    • 解决思路 :
      ① 属性存在于对象中
      ② 属性不是实例属性

某个属性是否存在且只存在于原型属性中

<script>

    //01 提供一个构造函数
    function Person(name) {
        this.name = name;
    }

    //02 设置构造函数的原型对象的属性
    Person.prototype.sayHello = function () {
        console.log("hello");
    };

    Person.prototype.des = "默认的描述信息";

    //03 创建对象
    var p1 = new Person();


    function isProperty(obj, property) {
        return !obj.hasOwnProperty(property) && (property in obj);
    }

    console.log(isProperty(p1, "constructor"));    //true
    console.log(isProperty(p1, "age"));            //false
    console.log(isProperty(p1, "name"));           //false
    console.log(isProperty(p1, "des"));            //true
    console.log(isProperty(p1, "sayHello"));        //true
    console.log(p1);

</script>

  • 构造器属性

    • 使用构造函数创建对象,则

    • 原型对象中的constructor属性指向对应的构造函数

    • 实例对象中的constructor指向对应的构造函数,其中这里的constructor就是从原型中获取的

    • 即constructor时实例对象中的原型属性,而非实例属性

相关文章

  • hasOwnProperty和in属性操作

    in操作符 用来检查对象中是否存在某个属性(不区分实例属性和原型属性) hasOwnProperty方法 说明:i...

  • JS:day12

    理解对象 1、定义属性(两种) 2、属性探测(两种) 用 in 操作符 和 hasOwnProperty 3、删除...

  • 如何在 JavaScript 中检查对象中是否存在某个属性?

    in 操作符用于检查对象的自有属性和继承来的属性是否存在。 hasOwnProperty 方法只检查属性是否存在于...

  • hasOwnProperty属性

    1.hasOwnProperty属性 2.//in key in obj obj为对象 key为所要判断的对象 ...

  • in&&hasOwnProperty、for in && Obj

    hasOwnProperty是能判断挂载在当前实例下的属性in操作可以判断挂载在当前实例以及原型链中的属性 for...

  • JavaScript Object

    Object 属性 prototype 实例属性 constructor 实例方法 hasOwnProperty ...

  • class类

    hasOwnProperty查看自己本身有没有某个属性p1.hasOwnProperty('name')in查看原...

  • JS笔记

    方法:hasOwnProperty() 判断属性是否存在

  • JavaScript Object 类型

    Object 类型的每个实例都具有下列属性和方法: hasOwnProperty(propertyName):用于...

  • js 判断对象是否拥有某个属性

    .hasOwnProperty(propname)有时候我们需要判断对象是否存在某个属性,好让我们进行下一步操作,...

网友评论

      本文标题:hasOwnProperty和in属性操作

      本文链接:https://www.haomeiwen.com/subject/jrxnwttx.html