标签:style http color io os 使用 java ar strong
5.1 Object类型
每一项可以保存任何类型的数据;
大小可以动态调整
length大小可变(最大值4294967295)
//不指定大小var colors1 = new Array();//指定大小var colors2 = new Array(20); //指定数组项var color3 = new Array(‘red‘, ‘blue‘, ‘green‘);//省略new 操作符var color4 = Array(‘‘red‘, ‘blue‘, ‘green‘);
var colors1 = [‘red‘, ‘blue‘, ‘green‘];//是哟那个字面量的BUG//这样会创建一个2(IE9+等)或3(IE8-)项的数组var values = [1 ,2, ];
if(value instanceof Array){ //对数组进行某些操作}
if(Array.isArray(value)){ //对数组执行某些操作}
IE9+ | Firefox4+ | Safari5+ | Opera10.5+ | Chrome |
toLocalString() : 调用数组每一项的toLocalString()方法,将返回的每个字符串拼接成一个以逗号分隔的字符串。
toString() : (隐式转换默认调用)调用数组每一项的toString()方法,将返回的每个字符串拼接成一个以逗号分隔的字符串。
valueOf() : 返回的还是数组。
join(【】) : 指定转换成字符串时使用的分隔符,默认或设为undefined将使用‘,‘
push() : 接受任意数量的参数,逐个添加到数组末尾,并返回修改后数组的长度
**param{any} 要添加到数组末尾的值或引用**...**return {Number} 修改后数组的长度
pop() : 从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
**return {any} 移除的项
var colors = new Array(); //创建一个数组var count = colors.push(‘red‘, ‘green‘); //推入两项alert(count); //2count = colors.push(black); //推入另一项alert(count); //3var item = colors.pop(); //取得最后一项alert(item); //‘black‘alert(colors.length); //2
shift() : 移除数组中的第一项并返回该项,同时将数组长度减一。
var colors = new Array();var count = colors.push(‘red‘, ‘green‘); //推入两项alert(count); //2count = colors.push(‘black‘); //推入另一项alert(count); //3var item = colors.shift(); //取得第一项alert(item); //‘red‘alert(colors.length); //2
unshift() : 在数组前端添加任意个项兵返回新数组的长度。
var colors = new Array();var count = colors.unshift(‘red‘, ‘green‘); //推入两项alert(count); //2count = colors.unshift(‘black‘); //推入另一项alert(count); //3var item = colors.pop(); //取得最后一项alert(item); //‘green‘alert(colors.length); //2
reverse() : 反转数组项的顺序
var values = [1, 2, 3, 4, 5];values.reverse();alert(values); //5,4,3,2,1sort() : 接受一个比较函数函数来排序,默认按升序排列(调用每个数组项的toString()转型方法转化为字符串然后对字符串排序)//1.无参数var values = [0, 1, 5, 10, 15];values.sort();alert(values); //0, 1, 10, 15, 5//2.传入比较函数/**比较函数接受两个参数*/function compare(value1, value2){ //升序 if(value1 < value2){ return -1; }else if(value1 > value2){ return 1; }else{ return 0; }}/*function cpmpare(value1, value2){ return value1 - value2;}*/var values = [0, 1, 5, 10, 15];values.sort(compare);alert(values); //0, 1, 5, 10, 15
concat() : 基于当前数组中设为所有项创建一个新数组
创建当前数组的一个副本;
将接收到的参数[数组|元素][每一项分别添加|添加]到副本的尾部;
返回新构建的数组。
var colors = [‘red‘, ‘green‘, ‘blue‘];var colors2 = colors.concat(‘yellow‘, [‘black‘, ‘brown‘]);alert(colors); //‘red, green, blue‘alert(colors2); //‘red, green, blue, black, brown‘
slice() : 接受1或2个参数,返回当前数组的一部分
一个参数:返回指定位置到数组末尾的所有项;
两个参数:返回起始位置到结束位置(不包含)的项。
参数有负值:数组长度+该值 = 位置
var colors = [‘red‘, ‘green‘, ‘blue‘, ‘yellow‘, ‘purple‘];var colors2 = colors.slice(1);var colors3 = colors.slice(1,4);alert(colors); //‘red, green, blue, yellow, purple‘alert(colors2); //‘green, blue, yellow, purple‘alert(colors3); //‘green, blue, yellow‘
splice() : 最强大的操作数组的方法
删除: 2个参数, (要删除的第一项的位置, 删除的项数)
插入: 3+个参数, (起始位置, 0, 插入的项, ...)
替换: 3+个参数, (起始位置, 要删除的项数, 插入的项, ...), 要删除的项数 = 插入的项数
var colors = [‘red‘, ‘green‘, ‘blue‘];var removed = colors.splice(0, 1); //删除第一项alert(colors); //‘green, blue‘alert(removed); //red, 返回数组中只包含一项removed = colors.splice(1, 0, ‘yellow‘, ‘orange‘); //从位置1开始插入两项alert(colors); //‘green, yellow, orange, blue‘alert(removed); //[]removed = colors.splice(1, 1, ‘red‘, ‘purple‘); //插入两项,删除一项alert(colors); //‘green, red, purple, orange, blue‘alert(removed); //yellow,返回的数组中只包含一项
indexOf() : 从前往后查找;两个参数, 要查找的项【和表示查找起点位置的索引】,返回查找的项在数组中的位置(没找到返回-1)
lastIndexOf() : 从末尾向前查找,其它同上
IE9+ | Firefox2+ | Safari3+ | Opera9.5+ | Chrome |
两个参数
参数一:在每一项上运行的函数
参数二:运行函数的作用于对象(影响 this 的值)
传入函数中的方法包含三个参数
参数一:数组项的值
参数二:该项在数组中的索引下标
参数三:数组对象本身
都不会修改数组中包含的值。
every() : 对数组中的每一项给定函数,每一项都返回true,则返回true
filter() : 对数组中的每一项给定函数,返回会返回true的项组成的数组
forEach() : 对数组中的每一项给定函数,没有返回值
map() : 对数组中的每一项给定函数 ,返回每次函数调用的结果组成的数组
some() : 对数组中的每一项给定函数,只要有一项返回true,就返回true
IE9+ | Firefox2+ | Safari3+ | Opera9.5+ | Chrome |
IE9+ | Firefox2+ | Safari3+ | Opera9.5+ | Chrome |
参数一:param {function} 在每一项上调用的函数(4个参数)
参数一:前一个值
参数二: 当前值
参数三:项的索引
参数四: 数组对象
参数二:【param {}】作为缩小基础的初始值
reduce() : 从第一项开始迭代数组的所有项,然后构建一个最终返回的值
var values = [1,2,3,4,5];var sum = values.reduce(function(prev,cur,index,array){ return prev + cur;});alert(sum); //15
reduceRight() : 从最后一项开始迭代数组的所有项,然后构建一个最终返回的值
var values = [1,2,3,4,5];var sum = values.reduceRight(function(prev,cur,index,array){ return prev + cur;});alert(sum); //15
第n个参数 | 代表 | 范围 | 默认值 | 必须 |
1 | 年 | (无) | (无) | 是 |
2 | 月 | 0-11 | (无) | 是 |
3 | 日 | 1-31 | 1 | 否 |
4 | 时 | 0-23 | 0 | 否 |
5 | 分 | 0-59 | 0 | 否 |
6 | 秒 | 0-59 | 0 | 否 |
7 | 毫秒 | 0-999 | 0 | 否 |
var nowDate = new Date(); //当前时间var specifyDate = new Date(1409540631971);var parseDate = new Date(‘May 25, 2014‘); //后台自动调用Date.parse()将字符串转为毫秒数var utcDate = new Date(2014, 4, 5, 17, 55, 55); //将根据本地时区转换为毫秒数(不同于Date.UTC(),后者参照GTC(格林尼治))
基于Java的java.util.Date构建;
使用UTC毫秒数保存日期(1970.01.01 +- 285616年)。
Date.parse(‘日期‘)
var someDate = new Date(Date.parse(‘May 25, 2004‘));
日期格式 | 例子 | 兼容性 |
‘月/日年‘ | ‘6/13/2004‘; | |
‘英文月 日, 年‘ | ‘January 12, 2004‘; | |
YYYY-MM-DDTHH:mm:ss:sssZ | 2004-05-25-T00:00:00 | ECMAScript 5 |
Date.UTC(n个参数)
//GMT时间2000年1月1日午夜零时var y2k = new Date(Date.UTC(2000,0));//GMT时间2014年9月1日上午10:53var y2k = new Date(Date.UTC(2014, 8, 1, 10, 53));
第n个参数 | 代表 | 范围 | 默认值 | 必须 |
1 | 年 | (无) | (无) | 是 |
2 | 月 | 0-11 | (无) | 是 |
3 | 日 | 1-31 | 1 | 否 |
4 | 时 | 0-23 | 0 | 否 |
5 | 分 | 0-59 | 0 | 否 |
6 | 秒 | 0-59 | 0 | 否 |
7 | 毫秒 | 0-999 | 0 | 否 |
Date.now()
new Date.getTime();
+new Date(). 兼容性更好,推荐
//取得开始时间//var start = new Date().getTime();//var start = +new Date();var start = Date.now(); doSomething();//取得停止时间var stop = Date.now(),result = stop - start;
IE9+ | Fire 3+ | Firefox 3+ | Safari3+ | Opera 10.5 | Chrome |
new Date().toString()
new Date().toLocalString()
new Date().valueOf()
toDateString()
toTimeString()
toLocalDateString()
toLocalTimeString()
toUTCString() (toGTMString()不推荐)
函数声明
/** 特点* 1.具有局限性,不能定义在if、while、for、try-catch等结构中* 2.可以定义在被引用后(函数声明提前)*/function sum(num1, num2){ return num1+num2;}
函数表达式
/** 特点* 1.可以定义在任何位置*/var sum = function(num1, num2){ return num1 + num2;};
Function构造函数
/** 最后一个参数是函数体,前面的所有参数枚举出新函数的参数* 特点:* 1.存在性能问题,需要解析两次(第一次是解析常规ECMAScript代码;第二次解析传入构造函数的字符串)* 2.执行环境为window* 3.可以看作一种函数表达式*/var sum = new Function(num1, num2){ return num1 + num2;};
/*** 对数组对象进行排序的比较函数* @param{string} propertyName 按照哪个属性来排序* @return{function} 比较函数*/function createComparisonFunction(propertyName){ return function(obj1, obj2){ var value1 = obj1[propertyName]; var value2 = obj2[propertyName]; if(value1 < value2){ return -1; }else if(value1 > value2){ reuturn 1; }else{ return 0; } };}var data = [{name:‘Zachary‘, age:28}, {name:‘Nicholas‘, age:29}];data.sort(createComparisonFunction(‘name‘);alert(data[0].name); //Nicholasdata.sort(createComparisonFunction(‘age‘);alert(data[0].name); //Zachary
arguments : 类数组对象
arguments.callee : (ECMAScript 5)指向拥有这个arguments对象的函数
function factorial(num){ if(num <= 1){ return 1; }else{ return num * arguments.callee(num-1); }}
arguments.caller OR caller: (ECMAScript 5)指向调用者
function outer(){ inner();}function(){ //严格模式下导致错误 alert(arguments.callee.caller);}outer();
length : 函数希望接收的命名参数的个数
function sayName(name){ alert(name);}function sum(num1, num2){ return num1 + num2;}function sayHi(){ alert(‘hi‘);}alert(sayName.length); //1alert(sum.length); //2alert(sayHi.length); //0
prototype : (不可枚举)指向原型的指针,保存着所有的实例方法
apply() : 每个函数都包含该方法,用于在特定的域中调用。接受两个参数(作用域和参数数组)
function sum(num1, num2){ return num1 + num2;}function callSum1(num1, num2){ return sum.apply(this, arguments); //传入arguments对象数组(apply将其当作一个普通数组使用)}function callSum2(num1, num2){ return sum.apply(this, [num1, num2]); //传入arguments对象}alert(callSum1(10, 10)); //20alert(callSum2(10,10)); //20
call() : 和apply()类似,不过传递给函数的参数必须逐个列出来而不是给数组
function sum(num1, num2){ return num1 + num2;}function callSum(num1, num2){ return sum.call(this, num1, num2); //传入arguments对象数组(apply将其当作一个普通数组使用)}alert(callSum1(10, )); //20
window.color = ‘red‘;var o = {color:‘blue‘};function sayColor(){ alert(this.color);}var objectSayColor = sayColor.bind(o);objectSayColor(); //blue
IE9+ | Firefox4+ | Safari 5.1+ | Opera 12+ | Chrome |
创建String类型的一个实例;
在实例上调用指定的方法;
销毁这个实例。
//情况一:基本类型调用相应包装类型的方法时自动封装var s1 = ‘some text‘;var s2 = s1.substring(2);//情况二:Object构造函数根据传入的值得类型返回基本包装类型实例var obj = new Objetc(‘some text‘);alert(obj instanceof String); //true//情况三:转型函数,不同于使用new调用包装类型的构造函数var value = ‘25‘;var number = Number(value); alert(typeof number); //‘number‘
var falseObject = new Boolean(false);var falseValue = false;alert(typeof falseObjetc); //‘objetc‘alert(typeof falseValue); //false
toString() : Boolean类型重写该方法,返回字符串‘true‘和‘false‘
valueOf() : Boolean类型重写该方法,返回基本类型true或false
valueOf() : 返回表示基本类型的数值
toString() OR toLocalString() : 返回字符串形式的数值
toFixed() : 接受一个参数,按照指定的小数位返回数值的字符串表示(IE8存在BUG)
toRxponential() : 使用e表示法接收一个参数,指定结果中的小数位数
toPrecision() : 返回固定大小格式或指数形式,接受一个参数,表示数值的所有数组位数(不包括指数部分)
var num = 10.005;alert(num.toFixed(2)); //‘10.01‘alert(num.toExponential(2)); //‘1.00e+1‘alert(num.toPrecision(2)); //‘10‘
length : 表示字符串中包含的字符数量
charAt() : 以单字符字符串的形式返回给定位置的字符
charCodeAt() : 以字符编码的形式返回给定位置的字符的字符编码
stringObj[num] : (ECMAScript 5)使用方括号加数字索引来访问字符串的特定字符
var stringValue = ‘hello world‘;alert(stringValue.charAt(1)); //‘e‘alert(stringVlaue.charCodeAt(1)); //‘101‘alert(stringVlaue[1]);
concat() : 将多个字符串拼接起来,返回拼接得到的心字符串
var stringValue = ‘hello‘;var result = StringValue.concat(‘world‘, ‘!‘);alert(result); //‘hello world!‘alert(stringValue); //‘hello‘
slice(startIndex, [endIndex]) : 返回从startIndex到endIndex(不包括,如果不指定默认到字符串结尾);参数为负数与字符串的长度相加
substr(startIndex, subLen) : 返回从startIndex开始长度为subLen的子串;第一个参数为负加上字符串的长度,第二个为负转为0(IE8存在BUG)
substring(startIndex, [endIndex] : 返回从startIndex到endIndex(不包括,如果不指定默认到字符串结尾),将所有负值转为0
//正值var stringValue = ‘hello world‘;alert(stringVlaue.slice(3)); //‘lo world‘alert(stringValue.substring(3)); //‘lo world‘alert(stringValue.substr(3)); //‘lo world‘//负值alert(stringVlaue.slice(3, 7)); //‘lo w‘alert(stringValue.substring(3, 7)); //‘lo w‘alert(stringValue.substr(3, 7)); //‘lo worl‘
indexOf(item,[startIndex]) : item{string} 从一个字符串中搜索第一个给定的子字符串,[startIndex]指定开始搜索的位置,返回子字符串的位置(没有返回-1)
lastIndexOf(item) : 从后往前搜索,其它同上
var stringValue = ‘hello world‘;alert(stringValue.indexOf(‘o‘, 6)); //7alert(stringValue.lastIndexOf(‘0‘, 6)); //4
var stringValue = ‘ hello world ‘;var trimmedStringVakue = stringValue.trim();alert(stringValue); //‘ hello world ‘alert(trimmedStringValue); //‘hello world‘
IE9+ | Firefox3.5+ | Safari5+ | Opera10.5+ | Chrome |
trimLeft()
trimRight()
Firefox3.5+ | Safari5+ | Chrome8+ |
toLowerCase() : 转换成小写
toLocalLowerCase() : 转换成小写(只针对特定地区的实现)
toUpperCase() : 转换成大些
toLocalUpperCase() : 转换成大写(只针对特定地区的实现)
match([正则表达式|RegExp对象]) : 本质上与调用EegExp.exec()相同,返回一个数组,数组的第一项是与整个模式匹配的字符串,之后的每一项保存着与正则表达式中的捕获组匹配的字符串。
var text = ‘cat, bat, sat, fat‘;var pattern =/.at/;//与pattern.exec(text)相同var matches = text.match(pattern);alert(matches.index); //0alert(matches[0]); //‘cat‘alert(pattern.lastIndex); //0
search([正则表达式|RegExp对象]) : 返回字符串中第一个匹配项的索引,没有返回-1。该方法始终从字符串开头向后查找模式。
var text = ‘cat, bat, sat, fat‘;var pos = text.search(/at/);alert(pos); //1
replace([正则表达式|RegExp对象], [字符串|函数]) : 如果第一个参数是字符串,只会替换第一个字符串;如果要替换所有子字符串就要提供一个正则表达式,并制定全局(g)标志。第二个参数如果是字符串,还可以使用一些特殊的字符序列。
var text = ‘cat, bat, satm fat‘;var result = text.replace(‘at‘, ‘ond‘);alert(result); //‘cond, bat, sat, fat‘result = text.replace(/at/g, ‘ond‘);alert(result); //‘cond, bond, sond, fond‘
var text = ‘cat, bat ,sat, fat‘;result = text.replace(/(.at)/g, ‘word{$1}‘);alert(result); //word(cat), word(bat) ,word(sat), word(fat)
function htmlEscape(text){ return text.replace(/[<>"&]/g, function(match, pos, originalText){ switch(match){ case ‘<‘: return ‘$lt;‘; case ‘>‘: return ‘>‘; case ‘&‘: return ‘&‘; case ‘\"‘: return ‘"‘; } });}alert(htmlEscape(‘<p class="greeting">Hello world!</p>‘)); //<p class=$quot;greeting">Hello world!</p>
split(stringValue, [arrarLength]) : 基于指定的分隔符将一个字符串分割成为多个子字符串,并将结果放在一个数组中。可以使用正则表达式(因浏览器而异)
var colorText = ‘red, blue, green , yellow‘;var colors1 = colorText.split(‘,‘); //[‘red‘, ‘blue‘, ‘green‘, ‘yellow‘]var colors2 = colorText.split(‘,‘, 2); //[‘red‘, ‘blue‘]var colors3 = colorText.split(/[^\,] +/); //["", ",", ",", ",", ""]
如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(大部分情况下是-1)
如果字符串等于字符串参数,返回0;
如果字符串在字母表中应该排在字符串参数之后,返回一个整数(大部分时候是1).
var stringValue = ‘‘yellow;alert(stringValue.localeCompare(‘brick‘)); //1alert(stringValue.localeCompare(‘yellow‘)); //0alert(stringValue.localeCompare(‘zoo‘));
alert(String.fromCharCode(104, 101, 108, 111)); //‘hello‘
encodeURI() : 对整个URI进行编码,用特殊的UTF-8编码替换所有无效的字符。不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号。
encodeURIComponent() : 对URI的某一段进行编码,会对它发现的任何非标准字符进行编码。(更常用,应为实践中更多只对查询字符串参数进行编码)
var uri = ‘http://www.wrox.com/illegal value.htm#start ‘;//‘http://www.wrox.com/illegal%20value.htm#start‘alert(encodeURI(uri));//‘http%3A%2F%2Fillegal%20value.htm%23start‘alert(encodeURIComponent(uri));
decodeURI() : 解码encodeURI()编码的URI
decodeURICompoment() : 解码encodeURIComponebt()编码的URI
var uri = ‘http%3A%2F%2Fillegal%20value.htm%23start‘;//http%3A%2F%2Fillegal%20value.htm%23startalert(decodeURI(uri));//http://www.wrox.com/illegal value.htm#startalert(decodeURIComponent(uri));
通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,具有与执行环境相同的作用域链;
只在eval()执行的时候创建,没有声明提升;
严格模式先在外部访问不到eval()中创建的任何变量和函数。
var msg = ‘hello world‘;eval(‘alert(msg);‘); //‘hello world‘
//没有给函数明确指定this值得情况下,无论是通过将函数添加为对象的方法//还是调用call()或apply(),this值等于Global对象var global = function(){ return this;}();
//参数中的最大值var max = Math.max(3, 54, 32, 16);alert(max); //54var min = Math.min(3, 54, 32, 16);alert(min); //3//数组中的最大值var values = [1, 2, 3, 4, 5, 6];max = Math.max.apply(Math, values);
Math.ceil() : 执行向上舍入
Math.floor() : 执行向下舍入
Math.round() : 四舍五入
function selectFrom(lowerValue, upperValue){ var choices = upperValue - lowerValue + 1; return Math.floor(Math.random() * choices + lowerValue);}var num = selectFrom(2,10);alert(sum); //介于2和10之间(包含)的一个数
标签:style http color io os 使用 java ar strong
原文地址:http://www.cnblogs.com/eli01/p/3993388.html