• JavaScript ---属性


    获取属性

    可以通过点(.)或方挂号([])运算符来获取属性的值。

    对于点(.)来说,右侧必须是一个以属性名称命名的简单标识符。对于[]来说,方挂号内必须是一个计算结果为字符串的表达式。

    var author = book.author;//得到book的'author'属性

    var title = book['main title'];//得到book的'main title'

    在ECMAScript 3中,点运算符后的标识符不能是保留字,比如,o.for或o.class是非法的;必须使用方挂号形式访问o['for']。

    在ECMAScript 5中对此放宽限制。

    在C/C++一些强类型语言中,对象只能拥有固定数目的属性,并且这些属性名称必须提前定义好。

    由于javascript是弱类型语言,在任何对象中都可以创建任意数量的属性。

    -----------------------------------------------------------------------------------------------------------------------------------

    查询属性

    查询一个不纯在的属性并不会报错,如果在对象o自身的属性或继承的属性中均未找到属性,返回undefined。

    但是,如果对象不存在,那么试图查询这个不存在的对象的属性就会报错。null和undefined值都没有属性。

    当然,给null和undined设置属性也会报类型错误。有一些属性是只读的,不能重新赋值。

    book.author = 'abc';

    -----------------------------------------------------------------------------------------------------------------------------------

    删除属性

    delete运算符可以删除对象的属性。delete只是断开属性和宿主对象的关联,而不会去操作属性中的属性

    delete book.author;

    delete book['main title'];

    delete运算符只能删除自有属性,不能删除除继承属性。

    ---------------------------------------------------------------------------------------------------------------------------------------

    检测属性

    in运算符、hasOwnPreperty()和propertyIsEnumerable()方法来检测属性。

    var o = {x:1};

    'x' in o;//true

    'y' in o;//flase

    'toString' in o;//true

    对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性。对于继承属性返回false

    o.hasOwnProperty('x');//true

    o.hasOwnProperty('y');//false

    o.hasOwnProperty('toString');//false,toString是继承属性

    对象的propertyIsEnumerable(),只有检测到是自有属性却这个属性的可枚举性为true时才返回true。

    除了使用in,另一种更简单的方法是使用'!=='判断一个属性是否是undefined。

    o.x!==undefined;//true

    o.y!==undefined;//false

    o.toString!==undefined;//true

  • 相关阅读:
    分布式缓存技术之Redis_03分布式redis
    Spring 二、400行代码手写初体验Spring V1.0版本
    Spring 一、各级架构与依赖关系
    Java正则表达式基础学习
    JAVA开发:SpringBoot多数据源配置
    Spring 单例模式实现源码分析
    Spring 使用的设计模式用哪些
    Spring之@Autowired和@Resource
    Spring的优缺点
    MySQL支持的事物隔离级别以及悲观锁和乐观锁原理和应用场景
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/4305390.html
Copyright © 2020-2023  润新知