zoukankan      html  css  js  c++  java
  • 11.基本包装类型

    基本包装类型

    学习要点:
    1.基本包装类型概述
    2.Boolean类型
    3.Number类型
    4.String类型


    为了便于操作基本类型值,ECMAScript提供了3中特殊的引用类型:Boolean、Number和String,这些类型与其
    它引用类型相似,但同时也具有与各自基本类型相应的特殊行为,实际上,每当读取一个基本类型值的时候,后台
    就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。

    一、基本包装类型概述

    var box = 'Mr.journey'; //定义一个字符串
    var box2 = box.substring(2); //截掉字符串前两位
    alert(box2); //输出新字符串

    变量box是一个字符串类型,而box.substring(2)又说明它是一个对象(PS:只有对象才会调用方法),最后把处
    理结果赋给box2。“Mr.journey”是一个字符串类型的值,按道理它不应该是对象,不应该会有自己的方法,比如:
    alert('Mr.journey(2)'); //直接通过值来调用方法

    1.字面量写法
    var box = 'Mr.journey'; //字面量
    box.name = 'journey'; //无效属性
    box.age = function (){ //无效方法
    return 100;
    };
    alert(box); //Mr.journey
    alert(box.substring(2)); //.journey,对象.方法(参数),这种写法明显是引用类型的写法
    alert(typeof box); //string
    alert(box.name); //undefined
    alert(box.age); //错误

    2.new运算符写法
    var box = new String('Mr.journey');
    box.name = 'journey';
    box.age = function (){
    return 100;
    };
    alert(box); //Mr.journey
    alert(box.substring(2)); //.journey
    alert(typeof box); //object
    alert(box.name); //journey
    alert(box.age); //100

    以上字面量声明和new运算符声明很好的展示了它们之间的区别。但有一定还是可以肯定的,那就是不管字面量
    形式还是new运算符形式,都可以使用它的内置方法。并且Boolean和Number特性与String相同,三种类型可
    以成为基本包装类型。

    PS:在使用new运算符创建以上三种类型的对象时,可以给自己添加属性和方法,但我们建议不要这样使用,
    因为这样会导致根本分不清到底是基本类型值还是引用类型值。

    二、Boolean类型

    Boolean类型没有特定的属性和方法。

    三、Number类型

    Number类型有一些静态属性(直接通过Number调用的属性,而无须new运算符)和方法。

    Number静态属性
    属性 描述
    MAX_VALUE 表示最大值
    MIN_VALUE 表示最小值
    NaN 非数值
    NEGATIVE_INFINITY 负无穷大,溢出返回该值
    POSITIVE_INFINITY 无穷大,移除返回该值
    prototype 原型,用于增加新属性和方法


    var box = 100;
    alert(box.MAX_VALUE); //这种写法叫做属性
    alert(Number.MAX_VALUE); //这种写法叫做静态属性(类型.属性)

    Number对象的方法
    方法(参数) 描述
    toString() 将数值转化为字符串,并且可以转换进制
    toLocaleString() 根据本地数字格式转换为字符串
    toFixed() 将数字保留小数点后指定位数并转化为字符串
    toExponential() 将数字以指数形式表示,保留小数点后指定位数并转化为字符串
    toPrecision() 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串


    var box = 1000.784;
    alert(box);
    alert(typeof box); //number
    alert(typeof box.toString()); //string,toString()把数值转换为字符串
    alert(box.toLocaleString()); //本地化
    alert(box.toFixed(2)); //小数点保留两位,并转换字符串,四舍五入
    alert(box.toExponential()); //以指数形式,转换字符串
    alert(box.toPrecision(2)); //根据传参来决定指数或者点数

    三、String类型

    String类型包含了三个属性和大量的可用内置方法。

    String对象属性
    属性 描述
    length 返回字符串的字符长度
    constructor 返回创建String对象的函数
    prototype 通过添加属性和方法扩展字符串定义

    String也包含对象的通用方法,比如valueOf()、toLocalString()和toString()方法,但这些方法都返回字符串的
    基本值。


    字符方法
    方法 描述
    charAt(n) 返回指定索引位置的字符串
    charCodeAt(n) 以Unicode编码形式返回指定索引位置的字符

    var box = 'Mr . journey'; //
    alert(box.charAt(1)); //r,返回指定索引下标的值
    alert(box.charCodeAt(1)); //114,返回的是acssii码
    alert(box[1]); //r,通过数组方式截取


    PS:box[1]在IE浏览器会显示undefined,所以使用时要慎重


    字符串操作方法
    方法 描述
    concat(str1.....str2) 将字符串参数串联到调用该方法的字符串
    slice(n,m) 返回字符串n到m之间位置的字符串
    substring(n,m) 同上
    substr(n,m) 返回字符串n开始的m个字符串

    var box = 'Mr. Lee';
    alert(box.concat('is' ,'Teacher' , '!')); //Mr. Lee is Teacher !
    alert(box.slice(4)); //Lee
    alert(box.slice(4,6)); //Le,从第4位取到第6位
    alert(box.substring(4)); //Lee
    alert(box.substring(4,6)); //Le,从第4位取到第6位
    alert(box.substr(4)); //Lee
    alert(box.substr(4,2)); //Le,从第4个开始选两个


    var box = 'Mr.Lee';
    alert(box.slice(-3)); //Lee,6+(-3)=3位开始
    alert(box.substring(-3)); //Mr.Lee,负数返回全部
    alert(box.substr(-3)); //Lee,6+(-3)=3位开始

    var box = 'Mr.Lee';
    alert(box.slice(3,-1)); //Le,6+(-1)=5,(3,5)
    alert(box.substring(3,-1)); //Mr.第二参数位负,直接转为0,(0,3)
    alert(box.substr(3,-1)); //'',第二个参数为负数,直接转为0,(3,0)

    PS:IE在JavaScript实现在处理向substr()方法传递负值的情况下存在问题,他会返回原始字符串,使用时要慎重

    字符串位置方法
    方法 描述
    indexOf(str,n) 从第n个搜索的第一个str,并将搜索的索引值返回
    lastIndexOf(str,n) 从n开始搜索的最后一个str,并将搜索的索引值返回

    var box = 'Mr.Lee is Lee';
    alert(box.indexOf('L')); //3
    alert(box.indexOf('L',5)); //10
    alert(box.lastIndexOf('L')); //10
    alert(box.lastIndexOf('L',5)); //3,从指定的位置向前搜索,

    PS:如果没有找到想要的字符,则返回-1。

    示例:找出全部的L
    var box = 'Mr.Lee is Lee'; //包含两个L的字符串
    var boxarr=[]; //存放L位置的数组
    var pos = box.indexOf('L'); //先获取第一个L的位置
    while(pos>-1){ //如果位置大于-1,说明还存在L
    boxarr.push(pos); //添加到数组
    pos = box.indexOf('L' , pos+1); //从新赋值pos目前的位置
    }
    alert(boxarr);

    大小写转换方法
    方法 描述
    toLowerCase(str) 将字符串全部抓为小写
    toUpperCase(str) 将字符串全部转为大写
    toLocaleLowerCase(str) 将字符串全部转为小写,并且本地化
    toLocaleUpperCase 将字符串全部转为大写,并且本地化


    var box = 'Mr.Lee is Lee';
    alert(box.toLowerCase()); //全部转为小写
    alert(box.toUpperCase()); //转为大写
    alert(box.toLocaleLowerCase()); //
    alert(box.toLocaleUpperCase()); //

    PS:只有几种语言(如土耳其语)具有地方特有的大小写本地性,一般来说,是否本地化效果都是一致的。

    字符串的模式匹配方法
    方法 描述
    match(pattern) 返回pattern中的子串或null
    replace(pattern , replacement) 用replacement替换pattern
    search(pattern) 返回字符串中pattern开始位置
    split(pattern) 返回字符串中按指定pattern拆分的数组

    正则表达式在字符串中的应用,在前面的正则表达式章节已经详细探讨过.
    以上中match()、replace()、search()、split()在普通字符串中也可以使用。

    var box = 'Mr.Lee is Lee';
    alert(box.match('L')); //找到L,返回L,否则返回null
    alert(box.replace('L','Q')); //找到L并且替换成Q
    alert(box.search('L')); //找到L的位置
    alert(box.split('')); //以空格分割成字符串


    其他方法
    方法 描述
    fromCharCode(ascii) 静态方法,输出Ascii码对应值
    localeCompare(str1 , str2) 比较两个字符串,并返回相应的值


    alert(String.fromCharCode(76)); //L,输出Ascii码对应值,放一个ascii码


    localeCompare(str1 , str2)方法详解:比较两个字符串并返回以下值中的一个:
    1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数。(多数-1)
    2.如果字符串等于字符串参数,则返回0.
    3.如果字符串在自附表中应该排在字符串参数之后,则返回一个正数。(多数1)


    HTML方法

    方法 描述
    anchor(name) <a name="name">str</a>
    big() <big>str</big>
    blink() <blink></blink>
    bold() <b>str</b>
    fixed() <tt>str</tt>
    fontcolor(color) <font color="color">str</font>
    fontsize(size) <font size="size">str</font>
    link(URL) <a href="URL">str</a>
    smail() <smail>str</smail>
    strike() <strike>str</strike>
    italics() <i>italics</i>
    sub() <sub>str<sub>
    sup() <sup>str</sup>

    以上是通过JS生成一个html标签,根据经验,没有什么太大用处,做个了解。

    var box = '百度';
    alert(box.link("http://www.baidu.com")); //超链接

  • 相关阅读:
    web api 特点
    码农
    到程序员短缺的地方生活,不要到过剩的地方凑热闹
    程序员也要寻找贸易的机会,要参加研讨会
    [Codeforces 863D]Yet Another Array Queries Problem
    [Codeforces 863C]1-2-3
    [Codeforces 864F]Cities Excursions
    [Codeforces 864E]Fire
    [Codeforces 864D]Make a Permutation!
    [Codeforces 864C]Bus
  • 原文地址:https://www.cnblogs.com/journey-IT/p/5260208.html
Copyright © 2011-2022 走看看