第五章 引用类型

  对象是引用类型的实例,引用类型是一种数据结构,将数据和功能组织在一起。描述的是一类对象所具有的属性和方法。对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数俩创建的,构造函数本身就是一个函数,只不过该函数试处于创建新对象的目的而定义的。  eg:  

 var person = new Object();

  1.创建Object实例的方式有两种   一:new+Object                二:对象字面量

                 var person = new Object();            var person = {

                 person.name = "Andy";               name:"Andy",  //这里是逗号    属性可以用引号括                                                    起来 表示为字符串

                 person.age = 29;                    age:29};   //29后面不要+,因为是最后一个属性

 对象字面量语法推荐只在考虑对象属性名的可读性时使用。,在用此方法定义对象时,不会调用Object构造函数。一般的开发人员更青睐字面量语法,因为代码少,有封装的感觉。字面量也是向函数传递大量可选参数的首选方式。eg:

        function displayInfo(args){

         var output = "";

         if(typeof args.name == "string"){

            output+="Name:"+args.name+"\n";

            } 

         if(typeof args.age == "number"){

            output+="age:"+args.age+"\n";

            } 

          alert(output);

         }

         displayInfo({

          name:"Andy", 

          age:29

          }); //Name:Andy

           //age:29

          

        displayInfo({

          name:"zhou",

          });//Name:zhou

  2.一般来说,访问对象属性时使用点表示法,但是如果属性名中包含会导致语法错误的字符,或者属性名使用的时关键字或者保留字,就要使用【】方括号表示法

      eg:person[" first name"],通常,除非必须要使用变量来访问属性,否则建议使用点表示法。

  3.Array类型  数组是一组数据的有序列表,但是ES中的数组可以保存任意类型的数据,并且数组打大小时可以动态调整的。

  4.创建数组的基本方式:一 使用Array构造函数      var colors =new Array( x );参数可以为数值表示数组的初始长度  

                                           也可以为字符,表示初始数组的内容

             二  数组字面量表示法           var color = [args]             参数可以为空,或者时实际数组值,用逗号隔开,但是最后一个字符不可以是逗号

            与创建对象一样,字面表示法不会调用Array构造函数.

  5.在读取和设置数组的值时,要使用方括号 并提供相应值的基于0的数字索引。eg:colors[2]//读取第三项   设置:colors[2] = "red";  如果超出数组长度则自动增加到该索引值+1的长度。

      eg: var num = [0,1,2,3,4]   num[0] = 15//设置   num.length= 5;//增加5在末尾   num[99] =99;  //第100项为99    6-98为undefined  

  6.可以用instanceof 来检测某个对象是不是数组  value instanceof Array;   但是这个是假设在只有一个全局变量的环境下,如果包含多个框架就要用Array.isArray( X ) 来检测。

  7.数组有 toLocaleString(),toString()和valueOf()转换方法。调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。valueOf()返回的还是数组。

  join()使用不同的分隔符来构建这个字符串,只接受一个参数,即用作作为分隔符的字符串,然后返回包含所有数组项的字符串

    eg:num= [1,2,3,4,5];  num.join("!");//1!2!3!4!5   如果不传参数或者参数为undefined   则使用逗号作为分隔符  

  push()接受任意数量的参数,把他们逐个添加到数组末尾,返回修改后的                                 数组长度

  pop() 从数组未移除最后一项,减少length的值-1,返回                   移除的项

  shift()从数组未移除第一项,减少length的值-1,返回                   移除的项           

  unshift()接受任意数量的参数,把他们逐个添加到数组头部,返回修改后的                                 数组长度  

增加的返回数组长度,减少的返回删除项

  reverse()反转数组项的顺序

  sort()调用toString()转型方法,对数组进行排序,unicode编码小的排在前面。 由于是toString()所以[0,1,5,10,15].sort()//0,1,10,15,5

  sort()方法可以接受一个比较函数作为参数。比较函数接受两个参数,如果第一个参数应该位于第二个之前返回一个负数

                                  如果第一个参数应该位于第二个之后返回一个整数

                                  相等则返回0;   

              函数如下:  function compare(value1,value2){      或者   function compare(value1,value2){

                      if(value1<value2)               return value1-value2

                      {return -1;}                   } 

                      else  if(value1>value2)            var values = [0,1,5,10,15];

                      {return 1;}                   values.sort(compare);

                      else{return 0;}

                      }                          alert(values);//0,1,5,10,15

                    var values = [0,1,5,10,15];

                    values.sort(compare);

                    alert(values);//0,1,5,10,15

  8.concat(),基于当前数组创建一个数组副本,并将接收的参数(任意类型)添加到副本的末尾,最后构建一个新的数组。

   slice(),基于当前数组创建一个新数组,接受1-2个参数,即要返回的起始项和结束位置(不包括结束位置)没如果只有一个参数,则为起始项到一直到数组末尾,不影响原始数组。

   splice()   删除:接受2个参数   要删除的第一项的位置和要删除的项数 splice(1,2)删除第二 第三项

           插入:接受3个参数    起始位置,0,要插入的项    splice(2,0,"red","green") 从第三项开始插入red green

        替换:  接受三个参数   起始位置,要删除的项数,要插入的项    splice(2,1,"red","green")删除第三项,插入red green

  9.查找位置  indexOf( x ,【Y】)X为要查找的值,从前开始,返回值为X索引位置,Y为可选参数表示起始位置

        lastindex  从后开始

        charAt(num) 查找索引位置为num的值

  10.迭代方法

    以下五个方法接受两个参数:要在每一项上运行的函数和[运行该函数的作用域对象]

    every() 对数组中的每一项运行给定函数,如果函数对每一项都返回true 则返回true

    some() 对数组中的每一项运行给定函数,如果某一项返回true 则返回true

    filter()对数组中的每一项运行给定函数,挑选出返回true的项成立一个新的数组

    map()在原数组的上对每一项运行指定函数,返回每次函数调用的结果组成的数组

    forEach(),对数组的每一项运行指定函数,没有返回值

      var numbers = [1,2,3,4,5,6,7]

      var everyResult = numbers.every(function(item,index,array){

              return (item>2);

              });//false

      

      var everyResult = numbers.some(function(item,index,array){

              return (item>2);

              });//true

    

      var everyResult = numbers.filter(function(item,index,array){

              return (item>2);

              });//[3,4,5,6,7]

      

      var everyResult = numbers.map(function(item,index,array){

              return (item*2);

              });// [2,4,6,8,10,12,14]

  11.reduce() //从第一项开始,逐个遍历到最后

    reduceRight()//最后一项开始

    接受两个参数:在每一项上的函数和[作为归并基础的初始值]

        var values = [1,2,3,4,5];

        var sum = sum.reduce(function(pre,cyr,index,array){

            return prev+cur;

        });//15

javascript高级程序设计 读书笔记2的更多相关文章

  1. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  2. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  3. Javascript高级程序设计读书笔记(第六章)

    第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...

  4. JavaScript高级程序设计-读书笔记(7)

    第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...

  5. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  6. JavaScript高级程序设计 读书笔记 第一章

    JavaScript是一种专门为与网页交互而设计的脚本语言 JavaScript实现 ECMAscript---核心 DOM---文档对象模型 BOM---浏览器对象模型

  7. Javascript高级程序设计读书笔记(第二章)

    第二章  在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...

  8. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  9. JavaScript高级程序设计-读书笔记(5)

    第13章 事件 1.事件流 事件流描述的是从页面中接收事件的顺序.IE的事件流是事件冒泡流,而Netscape Communicator的事件流是事件捕获流. (1)事件冒泡,即事件开始时由最具体的元 ...

  10. JavaScript高级程序设计-读书笔记(4)

    第11章 DOM扩展 1.选择符API Selector API Level 1 的核心是两个方法:querySelector()和querySelectorAll().在兼容的浏览器中,可以通过Do ...

随机推荐

  1. jQuery总体架构

    第一章  总体架构 1.设计理念 jQuery的理念就是“写更少的代码,做更多的事”,而且做到代码的高度兼容性. 2.总体架构 大致可以分为三个部分:构造模块,底层支持模块和功能模块. 3.使用自调用 ...

  2. JavaScript强化教程——jQuery UI API 类别

    ---恢复内容开始--- 主要介绍:JavaScript强化教程​—— jQuery UI API 类别 jQuery UI 在jQuery 内置的特效上添加了一些功能.jQuery UI 支持颜色动 ...

  3. MSCRM 用户登录日志

    MSCRM中关于用户登录信息,默认是不显示的,但是许多客户又有相关的需求. 下面将介绍给大家方法: 一.开启系统审核功能和用户访问审核. 二.打开设置中审核视图. 三.在过滤事件中选择“用户通过web ...

  4. SharePoint 2013 配置基于表单的身份认证

    前 言 这里简单介绍一下为SharePoint 2013 配置基于表单的身份认证,简单的说,就是用Net提供的工具创建数据库,然后配置SharePoint 管理中心.STS服务.Web应用程序的三处w ...

  5. Visual Studio将Delop之后生成的dll或者wsp复制到指定目录

    用VS开发sharepoint项目的时候,有很多个project,每个project都会生成一个wsp包,如果手工把wsp文件找到,复制出来,拷贝到服务器上,再部署,就有点麻烦. 所以写了个批处理命令 ...

  6. Autodesk 最新开发技术研讨会 -8月22日-Autodesk北京办公室

    为了增进与广大中国地区Autodesk产品的二次开发人员的了解与互动,帮助中国地区的Autodesk产品二次开发人员了解Autodesk最新的二次开发技术动向,并获得Autodesk公司专业开发支持顾 ...

  7. Android Testing学习02 HelloTesting 项目建立与执行

    Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...

  8. Android-Using DDMS

    原文:http://developer.android.com/tools/debugging/ddms.html#how-ddms-works Android提供了一个debug工具叫做:DDMS, ...

  9. JSON 转javabean 利器

    别再对着json来手写javabean啦.这个工作完全不要脑子,而且耗时. 这里给大家提供三种方式: android studio版: 万能的插件:GsonFormat 如何安装? Preferenc ...

  10. 巩固一下:SpringMVC详细示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...