第三章 对象

作者: 刘三慢 | 来源:发表于2018-06-03 16:46 被阅读0次

            JavaScript中的对象是可变的键控集合(一组数据和方法的集合),它将很多值聚合在一起,然后通过名字访问这些值。对象可以看作是这些属性的容器,起哄每个属性都拥有名字和值。属性名字可以是包括空字符串在内的任意字符串。属性可以是除undefined值之外的任何值。         

     对象字面量

    一个对象字面量就是包围在一对花括号中的零和多个“名/值”对,是一种非常方便地创建新对象值的表示法。

    对象字面量

    属性名可以骚包括空字符串在内的任何字符串。在对象字面量中,如果属性名是一个合法的JavaScript标识符且不是保留字,则可以不用引号括住属性名。

    属性的值可以从包括另一个对象字面量在内的任意表达式中获得,并且对象是可以嵌套的。

    检索

    要获取对象里面包含的值,可以采用对象名后面[ ]括住一个对象字面量名称,如果此名称是一个合法的JavaScript标识符且不说保留字可以采用  .  表示法(可读性更好)。

    ||运算符可以填充默认值。如果尝试从undefined的成员属性中取值会导致TypeError异常,可以通过&&运算符来避免错误。

    检索

    更新

    对象里的值可以通过赋值来更新。如果属性名已经存在那么这个属性的值会被替换,如果不存在那么该属性就会添加到对象中。

    原型

    每个对象都连接到一个原型对象,并且从中继承属性。原型连接在更新时是不起作用的,只有在检索值的时候才被用到。如果在获取对象的某个属性时,但该此属性不存在与该对象中,那么JavaScript会尝试从原型对象中获取属性值。如果此原型对象也没有该属性,就会继续从它的原型对象中查找,以此类推,直到该过程最后到达终点Object.prototype。如果想要的属性完全不存在于原型链中,那么结果就是undefined。这个过程被称为委托

    反射

    检查对象并确定对象的属性类型可以使用

      typeof

    检查属性类型

    hasOwnProperty()

    此方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性。

    语法 obj.hasOwnProperty(prop)   prop要检测的属性 字符串名称或者 Symbol

    last-name是原型当中的属性,此方法不会检查原型链,所以为false。

    枚举

    for in语句可以用来遍历一个对象中的所有属性名。该枚举过程将会列出所有的属性-包括函数和原型中的属性。如果想要过滤掉不想要的值可以使用 hasOwnPropertyt()方法,以及使用typeof排除函数。

    for in循环属性名出现的顺序是不确定的,如果想要按照特定顺序出现,最好避免使用for in语句,而是创建一个数组,在齐总以正确顺序包含属性名,然后for循环出来使用它们。

    枚举

    删除

    delete运算符可以用来删除对象中的属性,如果对象包含该属性,那么该对象就会被一处,不会触及原型链中的任何对象。

    如果对象和原型链中存在相同名称的属性,删除对象中的属性之后,会使原型链中的属性显现出来。

    减少全局污染

    JavaScript可以随意的的定义全局变量,应该避免定义太多的全局变量,最笑话使用全局变量的方法之一就是为应用创建一个唯一的全局变量。

    定义一个唯一的全局变量,使它成为容器

    只有把全局性的资源都装载到一个名称空间下,就会与其它组件或者类库发生的冲突的可能性降到最低。或者就是当你代码合并压缩时,和其它脚本的冲突会减小。

    相关文章

      网友评论

        本文标题:第三章 对象

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