zoukankan      html  css  js  c++  java
  • 怎样检测对象是否具有某个属性或方法

    前言: 检测对象是否具有某个属性分为两种情况.

    1. 如果要检测从原型链上继承的属性, 则使用: in 关键字;

    2. 如果不检测继承的属性, 则使用: Object.hasOwnProperty() 方法;

    第一步: 使用 in 关键字

    var obj = {};
    
    // obj.name没有声明, 且原型链上也没有找到, 因此返回false
    "name" in obj; // false
    
    // obj没有声明 toString 方法, 但在原型链上找到了, 因此返回true
    "toString" in obj; // true
    
    // 为obj新增一个属性和方法
    obj.name = "Lilei";
    obj.sayHi = function(){console.log("Hi.")};
    "name" in obj; // true;
    "sayHi" in obj; // true;

    第二步: 使用 Object.prototype.hasOwnProperty() 方法

    var obj = {};
    
    // obj.name没有声明, 故返回false
    obj.hasOwnProperty("name"); // false
    
    // obj没有声明 toString 方法, 尽管在原型链上有, 但不是定义在obj上的, 因此返回false
    obj.hasOwnProperty("toString"); // false
    
    // 为obj新增一个属性和方法
    obj.name = "Lilei";
    obj.sayHi = function(){console.log("Hi.")};
    
    obj.hasOwnProperty("name"); // true
    obj.hasOwnProperty("sayHi"); // true
  • 相关阅读:
    搭建 structs2 环境
    数据库基础
    好书推荐整理
    Java 完美判断中文字符
    中文在unicode中的编码范围
    [转载]爬虫的自我解剖(抓取网页HtmlUnit)
    web应用配置
    简单的Java Web服务器
    dos基本命令
    Unrecognized Windows Sockets error: 0: JVM_Bind
  • 原文地址:https://www.cnblogs.com/aisowe/p/11641032.html
Copyright © 2011-2022 走看看