[Javascript 高级程序设计]学习心得记录4 基本包装类型

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(/[^,]+/); //[“”, “,”, “,”, “,”, “”]

大概就这么多了,几个太冷门或者没什么用的就不说了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值