属性检测

对象作为属性的集合,属性又包括自有属性继承属性

  检测方法:

    \__   in运算符:

        \__ var obj = { x:1 }

          console.log( 'toString' in obj )  // true # 检测继承属性,继承自Object.prototype这一原型

          console.log( 'x' in obj ) // true #检测自有属性

    \__   hasOwnProperty:

          \__ var obj = { x:1 }

            console.log( obj.hasOwnProperty( 'toString' ) )  // false # 检测继承属性失败

            console.log( obj.hasOwnProperty( 'x' ) ) // true #检测自有属性

    \__   propertyIsEnumerable:

          \__ var obj = { x:1 }

              console.log( obj.propertyIsEnumerable( 'toString' ) )  // false # 检测继承属性失败

           console.log( obj.propertyIsEnumerable( 'x' ) ) // true #检测自有属性,且是显式属性

    结论:in运算不仅可以检测自有属性,还可以检测继承属性,其余两种方法仅能检测自有属性,它们之间的区别又由 存取器属性 来界定,暂且不谈

  

  对象的自有属性可以被枚举,如果要设置不可枚举可使用存取器属性

  枚举方法:

    \__  for/in:

       \__  var obj = { x : 1 , y : 2 }

         obj.propertyIsEnumerable( 'toString' )  //  false #不可枚举,ES5标准赋予

         console.log( 'toString' in obj ) //true #注意,for/in搭配起来用属性的可枚举特性才会生效

         for ( key in obj )

         console.log( key )  // x , y

 

JavaScript基础之对象属性的检测和枚举的更多相关文章

  1. JavaScript 基础回顾——对象

    JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...

  2. javascript基础(六)对象

    原文http://pij.robinqu.me/ JavaScript Objects 创建对象 对象直接量 var o = { foo : "bar" } 构造函数 var o ...

  3. javascript基础-js对象

    一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = ...

  4. 【Javascript 基础】对象

    1 创建对象 Javascript 支持对象的概率.有多种方法可以用来创建对象. <!DOCTYPE html> <html lang="en"> < ...

  5. javaScript基础-04 对象

    一.对象的基本概念 对象是JS的基本数据类型,对象是一种复合值,它将很多值(原始值或者对象)聚合在一起,可通过名字访问这些值,对象也可看做是属性的无序集合,每个属性都是一个名/值对.对象不仅仅是字符串 ...

  6. JavaScript基础函数的属性:记忆模式(019)

    函数在Javascript里是有属性的,因为它们是一种特殊对象.事实上,就算是没有明确声明,函数在最初就已经包含了一些固有的属性,比如所有函数都length这个属性,它可以指出函数声明了多少个参数: ...

  7. javascript基础知识-对象

    javascript创建对象有三种方法: 1)对象直接量 例:var empty = {}; var point = {x:1,y:4}; var book = { "main title& ...

  8. JavaScript基础--DOM对象(十三):(windows对象:history\location\navigator\screen\event)

    DOM编程1.为什么要学习DOM(1) 通过dom编程,我们可以写出各种网页游戏(2)dom编程也是ajax的重要基础2.DOM编程介绍DOM = Document Object Model(文档对象 ...

  9. JavaScript基础--DOM对象加强篇(十四)

    1.document 对象 定义:document对象代表的整个html文档,因此可以去访问到文档中的各个对象(元素)document重要的函数 1.1 write 向文档输出文本或js代码 1.2 ...

随机推荐

  1. Postgresql插入或更新操作upsert

    幂等性的一个要求是多次操作的结果一致.对于update操作,多次直接的结果都是最后update的值,是满足需求的. 但对于insert,如果已经插入,第二次会报错,duplicate error, 主 ...

  2. JavaScript中的classList的使用

    动态控制元素的样式 style[样式名] = 值 增删改class的方式 classList下的方法 增加 class — node.classList.add() 删除 class — node.c ...

  3. linux下jdk8安装

    --- 解压命令不管用 添加插件 yum install tar --- 上传命令不管用 添加插件 wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20 ...

  4. idea提交项目到码云上

    参考 https://www.cnblogs.com/BaleW/p/9293184.html

  5. 《推荐》安装Photoshop详细步骤 ,手把手,一步一步,具体详细地教你安装Photoshop (Adobe photoshop CS6)

    现在的大学生必备技能,除了单反拍照,就是PS (Photoshop)了.可以说PS是一个强大的图片编辑处理软件,也是目前公认的最好的通用平面美术设计软件,它的功能完善,性能稳定,使用也很方便.几乎在所 ...

  6. python 自动化之路

    https://www.cnblogs.com/yangliheng/category/878973.html

  7. python简单爬虫 用beautifulsoup爬取百度百科词条

    目标:爬取“湖南大学”百科词条并处理数据 需要获取的数据: 源代码: <div class="basic-info cmn-clearfix"> <dl clas ...

  8. 使用spring:aop中修改增强方法中的参数

    大家都知道,在增强方法中,使用jp.getArgs()[index]可以获取传进来的参数,但是参数传进来之后,怎么改变它的值呢? 因为jp.getArgs()[index]获取到的只是数据的备份,所以 ...

  9. DevExpress ASP.NET Core Controls 2019发展蓝图(No.4)

    本文主要为大家介绍DevExpress ASP.NET Core Controls 2019年的官方发展蓝图,更多精彩内容欢迎持续收藏关注哦~ [DevExpress ASP.NET Controls ...

  10. puts方法要点

    puts是print string的缩写.尽管没有直观的表示会调用换行符,但是puts会这样做:如同print,打印用户的数据,之后自动地转到新一行.假如让puts打印已经以换行符结束的一行,它不会再 ...