javascript高级程序设计 读书笔记2
第五章 引用类型
对象是引用类型的实例,引用类型是一种数据结构,将数据和功能组织在一起。描述的是一类对象所具有的属性和方法。对象是某个特定引用类型的实例,新对象是使用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的更多相关文章
- javascript高级程序设计读书笔记-事件(一)
读书笔记,写的很乱 事件处理程序 事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别 没有DOM1 同样的事件 DOM0会顶掉html事件 因为他们都是属性 而 ...
- javascript高级程序设计读书笔记
第2章 在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...
- Javascript高级程序设计读书笔记(第六章)
第6章 面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...
- JavaScript高级程序设计-读书笔记(7)
第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...
- JavaScript高级程序设计 读书笔记
第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...
- JavaScript高级程序设计 读书笔记 第一章
JavaScript是一种专门为与网页交互而设计的脚本语言 JavaScript实现 ECMAscript---核心 DOM---文档对象模型 BOM---浏览器对象模型
- Javascript高级程序设计读书笔记(第二章)
第二章 在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...
- JavaScript高级程序设计-读书笔记(6)
第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l 简单值:使用与JavaScript相同的语法,可以在JS ...
- JavaScript高级程序设计-读书笔记(5)
第13章 事件 1.事件流 事件流描述的是从页面中接收事件的顺序.IE的事件流是事件冒泡流,而Netscape Communicator的事件流是事件捕获流. (1)事件冒泡,即事件开始时由最具体的元 ...
- JavaScript高级程序设计-读书笔记(4)
第11章 DOM扩展 1.选择符API Selector API Level 1 的核心是两个方法:querySelector()和querySelectorAll().在兼容的浏览器中,可以通过Do ...
随机推荐
- 解决Visual Stuido 2013中Xamarin的*.axml文件没有智能提示问题
最近发现VS2013开发Android,发现.axml无法进行智能提示. 1.打开VS2013菜单栏中,点击工具--选项--文本编辑器--文件扩展名 2.增加一个扩展名为"axml" ...
- C/C++构建系统 -工具汇总
关于构建系统可以先参考百科 http://en.wikipedia.org/wiki/List_of_build_automation_software http://www.drdobbs.com/ ...
- Day Tip:SharePoint 2013 *.ascx.g.cs文件
在开发SharePoint2013的WebPart时,会产生一个*.ascx.g.cs文件.如果用TFS管理源代码经常遇到这个文件丢失.这让人很困扰,如果丢失了请在如下图中添加如下代码: ...
- Activity源码简要分析总结
Activity源码简要分析总结 摘自参考书籍,只列一下结论: 1. Activity的顶层View是DecorView,而我们在onCreate()方法中通过setContentView()设置的V ...
- Swift开发第七篇——字面量转换&下标
本篇分为两部分: 一.Swift 中的字面量转换 二.Swift 中的下标 一.Swift 中的字面量转换 所谓字面量就是指像特定的数字,字符串或者是布尔值这样能够直接了当地指出自己的类型并未变量进行 ...
- Mac下载安装Android Studio教程
今天把公司闲置的一台Mac-mini重装了下系统感觉用着速度还不错,平时上班用的机器USB有些问题,所以打算用这台Mac.以往开发用Intellij Idea就够用,但是这次项目引用的jar包太多,遭 ...
- node模块的分类
模块的分类 1.核心模块 2.文件模块 3.第三方模块(npm安装的) 模块的引用: 1.路径 2.模块名 模块的流程: 1.创建模块:teacher.js 2.导出模块:exports.add=fu ...
- 弹出层在兼容模式和IE8模式下显示不正常
弹出层在火狐.谷歌.360极速模式.IE6下都能100%面积正常显示,但在IE8和360的兼容模式下只显示弹出层下半部分或右半部分的内容,在主页面加上: <meta http-equiv=&qu ...
- 《Java JDK7 学习笔记》课后练习题2
1.如果在hello.java中撰写以下的程序代码: public class Hello { public static dmain(String[]args) { Sys ...
- jasperreports+iReport制作报表笔记
一. 准备工作 1. 下载相关工具:点击此下载相关工具,jasperreports-5.6.0-project.zip中有提供所需的jar包. 二. 安装ant 1. 解压apache-ant-1.9 ...