js的数据类型分为基本类型和引用类型。基本类型有null,undefined,boolean,number和string五种类型,引用类型是对象定义,是一种数据结构,像函数,数组都算。本来两种类型应该是区分得很清楚的,但是为了方便操作基本类型值,js提供了三种特殊的引用类型:Boolean,Number,String(谁让对象方法这么方便呢)。每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据,上个例子。
var s1 = “some text”;
var s2 = s1.substring(2);
可以看到,原本没有方法的字符串基本类型居然有了方法,可以直接调用。也可以直接通过Object 构造函数,创建对应的实例对象。new String(“some text”);但是不推荐显式地创建基本包装类型的对象。
1.Boolean类型
感觉这个没什么用,基本包装类型和基本类型有点区别,直接上代码。
var falseObject = new Boolean(false);
var result = falseObject && true;
alert(result); //true
var falseValue = false;
result = falseValue && true;
alert(result); //false
alert(typeof falseObject); //object
alert(typeof falseValue); //boolean
alert(falseObject instanceof Boolean); //true
alert(falseValue instanceof Boolean); //false
2,Number类型
继承了valueof()类型,返回对象的数值。
toString()可以转换进制并且按字符串格式输出,此外还有按位四舍五入输出的方法toFixed().
var numberObject = new Number(10);
var numberValue = 99;
//toString() using a radix
alert(numberObject.toString()); //"10"
alert(numberObject.toString(2)); //"1010"
alert(numberObject.toString(8)); //"12"
alert(numberObject.toString(10)); //"10"
alert(numberObject.toString(16)); //"a"
//toFixed()
alert(numberObject.toFixed(2)); //outputs "10.00"
numberObject = new Number(99);
alert(numberObject.toPrecision(1)); //"1e+2"
alert(numberObject.toPrecision(2)); //"99"
alert(numberObject.toPrecision(3)); //"99.0"
alert(typeof numberObject); //object
alert(typeof numberValue); //number
alert(numberObject instanceof Number); //true
alert(numberValue instanceof Number); //false
3.String 类型
这个才是重头戏,让我们平时处理字符串方便很多。比如length属性,得字符串长度。下面详细说明常用的一些方法。
1)字符方法
charAt()方法可以选定某个位置的字符输出。
var stringValue = “hello world”;
alert(stringValue.charAt(1));//e
不过,也可以直接和其他语言一样,当成字符数组处理。
alert(stringValue[1]);//e
2)字符串操作方法
concat() 字符串拼接方法。
以及3个裁切方法
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)字符串位置方法
var stringValue = “Lorem ipsum dolor sit amet, consectetur adipisicing elit”;
var positions = new Array();
var pos = stringValue.indexOf(“e”);
while(pos > -1){
positions.push(pos);
pos = stringValue.indexOf("e", pos + 1);
}
alert(positions); //"3,24,32,35,52"
4)大小写转换 和 去前后空格
var stringValue = “hello world”;
alert(stringValue.toLocaleUpperCase()); //”HELLO WORLD”
alert(stringValue.toUpperCase()); //”HELLO WORLD”
alert(stringValue.toLocaleLowerCase()); //”hello world”
alert(stringValue.toLowerCase()); //”hello world”
trim()可以去字符串前后的空格 方便处理
5)字符串的模式匹配方法
先说简单的两个,match()和RexExp的exec()方法相同,返回匹配项的数组。search()返回第一个匹配的位置。
实现匹配替换的方法、replace()。先上例子
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
var pos = text.search(/at/);
alert(pos); //1
var result = text.replace("at", "ond");
alert(result); //"cond, bat, sat, fat"
result = text.replace(/at/g, "ond");
alert(result); //"cond, bond, sond, fond"
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 "<";
case ">":
return ">";
case "&":
return "&";
case "\"":
return """;
}
});
}
alert(htmlEscape("<p class=\"greeting\">Hello world!</p>")); //<p class="greeting">Hello world!</p>
分割函数 split()这个可能是最常用的了
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(/[^,]+/); //[“”, “,”, “,”, “,”, “”]
大概就这么多了,几个太冷门或者没什么用的就不说了。