一.String类型
1.字符串位置方法:indexOf()
搜索给定的子字符串,然后返回子字符串的位置(没有找到该子字符串,返回-1);可接受第二个参数表示从子字符串中的哪个位置开始搜索。
例子:可以通过循环调用indexOf来找到所有匹配的子字符串。
var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = new Array(); //var positons=[]
var pos = stringValue.indexOf("e");
while(pos > -1){
positions.push(pos);
pos = stringValue.indexOf("e", pos + 1);
}
alert(positions); //"3,24,32,35,52"
2.字符串操作方法比较
slice() 方法可从已有的数组中返回选定的元素。
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
Substr():可在字符串中抽取从 start 下标开始的指定数目的字符。
语法:stringObject.substr(start,length)
注释:substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用。
重要事项:与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。
实例比较:
var stringValue = "hello world";
alert(stringValue.slice(3)); //"lo world"
alert(stringValue.substring(3)); //"lo world"
alert(stringValue.substr(3)); //"lo world"
alert(stringValue.slice(3, 7)); //"lo w"
alert(stringValue.substring(3,7)); //"lo w"
alert(stringValue.substr(3, 7)); //"lo worl"
alert(stringValue.slice(-3)); //"rld"
alert(stringValue.substring(-3)); //"hello world"
alert(stringValue.substr(-3)); //"rld"
alert(stringValue.slice(3, -4)); //"lo w"
alert(stringValue.substring(3, -4)); //"hel"
alert(stringValue.substr(3, -4)); //"" (empty string)
3.字符串的模式匹配方法
1.match
定义和用法:match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本
如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。
var text = "cat, bat, sat, fat";
var pattern = /.at/;
var matches = text.match(pattern);
alert(matches.index); //0
alert(matches[0]); //"cat"
alert(pattern.lastIndex); //0
2.search
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
注释:如果没有找到任何匹配的子串,则返回 -1。
.3.replace
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
4.split()
split() 方法用于把一个字符串分割成字符串数组。
1.内置对象
Math对象random方法
例1:var num = Math.floor(Math.random() * 9 + 2);
alert(num); //a number between 2 and 10
例2:
function selectFrom(lowerValue, upperValue) {
var choices = upperValue - lowerValue + 1;
return Math.floor(Math.random() * choices + lowerValue);
}
var num = selectFrom(2, 10);
alert(num); //number between 2 and 10 (inclusive)
从数组中随机取出一个值:
var colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"];
var color = colors[selectFrom(0, colors.length-1)];
alert(color); //any of the strings in the array
函数本身就是变量 ,可以作为值来使用。
function callSomeFunction(someFunction, someArgument){
return someFunction(someArgument);
}
function add10(num){
return num + 10;
}
var result1 = callSomeFunction(add10, 10);
alert(result1); //20
function getGreeting(name){
return "Hello, " + name;
}
var result2 = callSomeFunction(getGreeting, "Nicholas");
alert(result2); //Hello, Nicholas
访问函数的指针而不执行函数的话,必须去掉函数名后面的圆括号。
可以从一个函数中返回另一个函数:
function createComparisonFunction(propertyName) {
return function(object1, object2){
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 < value2){
return -1;
} else if (value1 > value2){
return 1;
} else {
return 0;
}
};
}
var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];
data.sort(createComparisonFunction("name"));
alert(data[0].name); //Nicholas
data.sort(createComparisonFunction("age"));
alert(data[0].name); //Zachary
在函数内部,有两个特殊的属性:argument和this
arguments 对象
在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。Argument是一个类数组对象,包含着传入参数中的所有参数。
虽然argument的主要用途是保存函数参数,但这个对象还有一个callee的属性,该属性是一个指针,指向拥有这个argument对象的函数。
还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。
This
关键字 this 总是指向调用该方法的对象
使用 this,即可在任何多个地方重用同一个函数。请思考下面的例子:
function showColor() {
alert(this.color
);
};
var oCar1 = new Object;
oCar1.color = "red";
oCar1.showColor = showColor;
var oCar2 = new Object;
oCar2.color = "blue";
oCar2.showColor = showColor;
oCar1.showColor(); //输出 "red"
oCar2.showColor(); //输出 "blue"
注意,引用对象的属性时,必须使用 this 关键字。例如,如果采用下面的代码,showColor() 方法不能运行:
function showColor() {
alert(color
);
};
如果不用对象或 this 关键字引用变量,ECMAScript 就会把它看作局部变量或全局变量。然后该函数将查找名为 color 的局部或全局变量,但是不会找到。结果如何呢?该函数将在警告中显示 "null"。
每个函数都含有两个属性length和prototype