6.3 删除内容

  delete运算符可以删除对象的属性。

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

  delete表达式删除成功或没有任何副作用时,它返回true.

6.4 检测属性

  用in\hasOwnProperty\propertyIsEnumberable\!==

  in 对于对象的自有属性或继承属性中包含有这个属性的返回true.

  hasOwnProperty方法用来检测 给定的名字是否是对象的自有属性

  propertyIsEnumerable()是hasOwnProperty增强版,只检测到是自有属性且这个属性的可枚举性为true.

  还可以用in 和 !==判断属性,但对象的值不能为undefined

6.5 枚举属性

  for ( p in o )

    {

     if (!o.hasOwnProperty(p))  continue;

    }

  for ( p in o )

    {

    if ( typeof o[p] === "function" ) continue;

    }

 例6-2

  /*  

  把p中的可枚举属性复制到o中,并返回o

  如果o和p中含有同名属性,则覆盖o中的属性

  这个函数并不处理getter和setter以及复制属性

  */ 

  function extend(o,p){

          for(prop in p)

    {

      o[prop]=p[prop]

    }

    return o;

  }

/*将p中的可枚举属性复制到o中,并返回o

 如果o和p中有同名的属性,o中的属性将不受影响

这个函数并不处理getter和setter以及复制属性

*/

    function merge(o,p)

    {

      for (prop in p ){

        if (o.hasOwnProperty(prop)) continue;       //这里的书里写错了

        o[prop]=p[prop]

      }

      return o;

    }

/*如果o中属性在p中没有同名属性,则从o中删除 这个属性返回o*/

      function restrict(o,p){

        for(prop in o){

          if(!(prop in p)) delete o[prop];

        }

        return o;

      }

/*如果o中属性在p中有同名属性,则从o中删除 这个属性返回o*/

       function subtract(o,p)

        {

          for(prop in p)

            {

               delete o[prop];

            }

        }

/*返回一个新对象,这个对象同时拥有o的属性和p属性如果o和p中有名属性,使用p中的属性值*/

    function union(o,p){

        retrun extend(extend({},o),p);

    }

/*返回一个新对象,这个对象拥有同时在o和p中出现的属性很像求o和p的交集,但p中属性的值 被忽略*/

    function intersection(o,p){ return restrict(extend(extend({},o),p);}

/*返回一个数组,这个数组包含的是o中可枚举的自有属性的名字*/

    function keys(o){

    if ( typeof o !== "object" ) throw TypeError();

    var result=[];

    for ( var prop in o ){

        if(o.hasOwnProperty(prop))  result.push(prop);

    }

    return result;    

}

第六章 对象-javaScript权威指南第六版(三)的更多相关文章

  1. 第六章 对象-javaScript权威指南第六版

    什么是对象? 对象是一种复合值,每一个属性都是都是一个名/值对.原型式继承是javaScript的核心特征. 对象常见的用法有,create\set\query\delete\test\enumera ...

  2. 第六章 对象-javaScript权威指南第六版(四)

    6.6 属性getter和setter 对象属性是由名字.值和一组特性(attribute)构成的. getter和setter定义的属性称做"存取器属性"(accessor pr ...

  3. 第六章 对象-javaScript权威指南第六版(二)

    通过原型 继承创建一个新对象,对于这一个函数的有说不出的感觉,看看语句都很简单,深层次的东西就是不知道 function inherit(p) { if(p == null)  throw TypeE ...

  4. 《JavaScript权威指南 第六版 中文版》(一)

    <JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...

  5. 《JavaScript权威指南(第6版)(中文版)》PDF

    简介自1996年以来,JavaScript的:权威指南已为JavaScript圣经程序员,程序员指南和全面的参考,以核心语言和客户端JavaScript API的Web浏览器定义.第6版包括HTML5 ...

  6. javascript权威指南第6版学习笔记

    javascript权威指南第6版学习笔记 javascript数组.函数是特殊对象 看一点少一点. 3.1.4 hello.js内容是 var x=.3-.2;var y=.2-.1 console ...

  7. JavaScript权威指南(第6版)(中文版)笔记

      JavaScript权威指南(第6版)(中文版)笔记      

  8. 【笔记】javascript权威指南-第六章-对象

    对象 //本书是指:javascript权威指南    //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. ...

  9. Note | Javascript权威指南[第六版] 第1章:Javascript概述

       JavaScript是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.JavaScript的语法源自Java,它的一等函数(first-class function)来 ...

随机推荐

  1. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  2. Python实现身份证号码有效性验证

    # -*- coding: utf-8 -*- import re #Errors=['验证通过!','身份证号码位数不对!','身份证号码出生日期超出范围或含有非法字符!','身份证号码校验错误!' ...

  3. gdb nnet3-compute

    gdb nnet3-compute测试命令 $ matrix-dim 'scp: head -n 1 data/test/feats.scp|' ~/kaldi/src/bin/matrix-dim ...

  4. SpringMVC+Apache Shiro+JPA(hibernate)案例教学(四)基于Shiro验证用户权限,且给用户授权

    最新项目比较忙,写文章的精力就相对减少了,但看到邮箱里的几个催更,还是厚颜把剩下的文档补上. 一.修改ShiroDbRealm类,实现它的doGetAuthorizationInfo方法 packag ...

  5. Python:python抓取豆瓣电影top250

    一直对爬虫感兴趣,学了python后正好看到某篇关于爬取的文章,就心血来潮实战一把吧. 实现目标:抓取豆瓣电影top250,并输出到文件中 1.找到对应的url:https://movie.douba ...

  6. GDAL create kml

    新增kml 点 public void WriteKmlPiont() { string driverName = "KML"; //MapInfo File OSGeo.GDAL ...

  7. mysql 8.0~MGR多成员读一致性

    一 背景:当在读节点多成员查询时可能导致数据不一致 二 三种场景   1 读多写少  AFTER    2 读写相当  AFTER_AND_BEFORE   3 读少写多  BEFORE三 数据不一致 ...

  8. mysql tp5 find_in_set写法

    [['','exp',"FIND_IN_SET(".$data['type'].",place_category)"]]

  9. 2、阿里云ECS发送邮件到腾讯企业邮箱(ECS默认不开启25端口)

    阿里云ECS默认禁用25端口导致发邮件失败. 方法一: 使用shell脚本发送邮件,需要配置mailx 1.安装软件 yum install mailx 2.配置 vim /etc/mail.rc在文 ...

  10. 2018-2019-2 网络对抗技术 20165314 Exp4 恶意代码分析

    一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,s ...