zoukankan      html  css  js  c++  java
  • 特殊的引用类型

    今天主要学习了三个特殊的引用类型:Boolean,Number和String。同时也回顾了一下以前学习的知识。

    首先,我们知道基本类型值不是对象,因此不应该会有方法。但是,实际上它们是有方法的。每当读取一个基本类型值的时候,后台就会创建一个对应的包装类型的对象,从而让我们可以调用一些方法来操作这些数据。

    对基本包装类型的实例调用typeof会返回“object”,而且所有基本包装类型的对象都会被转换为布尔值true。

    (一)Boolean类型

    要创建一个Boolean对象,可以调用Boolean构造函数并传入true或false。

    var boolean1=new Boolean(true);

    Boolean类型的实例重写了valueOf()方法,返回基本类型值true或false;重写了toString()方法,返回字符串"true"或"false"。

    目前,Boolean类型出现的最常见的问题是在布尔值表达式中使用Boolean对象。例如:

    var one=new Boolean(false);

    var result=one&&true;

    alert(result);//输出true

    按理说,在布尔运算中false&&true等于false,但是这里却是true。这是因为这里是对one而不是对它的值(false)进行求值,在布尔表达式中的所有对象都会被转换为true,true&&true结果当然输出为true。

    var one=false;

    var result=one&&true;

    alert(result);//输出false

    在这里就是对one的值进行求值,因此false&&true结果输出false。

    还有,基本类型与引用类型的布尔值还有两个区别,typeof操作符对基本类型返回"boolean",而对引用类型返回"object"。其次,因为Boolean对象是Boolean类型的实例,所以使用instanceof操作符测试Boolean对象会返回true,而测试基本类型的布尔值会返回false。

    (二)Number类型

    Number类型也重写了valueOf(),toLocaleString()和toString()方法。valueOf()返回对象表示的基本类型的数值。另外两个返回字符串形式的数值。

    Number类型提供的方法:

    toFixed()方法会按照指定的小数位返回数值的字符串形式,同时还能自动舍入。例如:

    var num=10.005;

    alert(num.toFixed(2));//输出“10.01”

    toExponential()方法会以指数表示法返回数值的字符串形式。参数也是指定输出结果中的小数位数。

    var num=10;

    alert(num.toFixed(1));//输出"1.0e+1";

    toprecision()方法可能返回fixed格式,也可能返回exponential格式,主要看哪种比较适合。也是接收一个参数,表示数值的所以数字的位数。

    var num=99;

    alert(num.toprecision(1));//"1e+2"

    alert(num.toprecision(2));//99

    alert(num.toprecison(3));//99.0

    (三)String类型

    继承的valueOf(),toLocaleString()和toString()方法都返回对象所表示的基本字符串值。

    String类型也提供了很多方法:

    charAt()方法以单字节字符串的形式返回给定位置的那个字符。例如:

    var one="blue";

    alert(one.charAt(1));//输出"l"

    如果你想得到的是字符编码,那么可以使用charCodeAt()。

    concat()方法用于将一或多个字符串拼接起来,返回拼接得到的新字符串。同时不改变原字符串。

    var one="hello "

    var result=one.concat("world","!");

    alert(result);//输出“hello world!”

    三个基于子字符串创建新字符串的方法:slice(),substr()和substring()。这三个方法都返回被操作字符的一个子字符串,而且都接收一或两个参数。slice()和substring()方法第一个参数指定子字符串开始的位置,第二个指定结束位置。substr()第二个参数指定的是返回字符的个数。这三个方法也不会修改原字符串。

    var one="hello world";

    alert(one.slice(1));//"ello world"

    alert(one.substring(1));//"ello world"

    alert(one.substr(1));//"ello world"

    alert(one.slice(1,7));//"ello w"

    alert(one.substring(1,7));//"ello w"

    alert(one.substr(1,7));//"ello wo"

    当参数是负数时,这三个方法的结果就有很大的不同了。

    slice()方法会将传入的负数与字符串长度相加。

    substr()方法将第一个参数与字符串长度相加,第二个参数为0。

    substring()方法会把所以负值参数变为0。

    字符串位置方法:indexOf()和lastIndexOf()。从一个字符串中搜索给定子字符串,返回子字符串的位置。

    trim()方法会创建一个字符串的副本,删除前置及后缀的所有空格。

    toLowerCase(),toLocaleLowerCase()和toUpperCase(),toLocaleUpperCase()大小写转换的方法

    String类型提供了用于字符串中匹配模式的方法。

    match()方法,只接收一个参数,正则表达式或一个RegExp对象。

    var text="cat,bat,sat,fat";

    var pattern=/.at/;

    var matches=text.match(pattern);

    alert(matches[0]);//"cat"

    search()方法参数与match()方法的参数相同。返回字符串中第一个匹配项的索引。

    replace()方法接收两个参数:第一个参数可以是字符串或一个RegExp对象,第二个参数可以是字符串或一个函数。

    如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有的子字符串需要用正则表达式,而且要指定全局g。

    var text="cat,bat,sat,fat";

    var result=text.replace("at","on");

    alert(result);//输出"con,bat,sat,fat"

    result=text.replace(/at/g,"on");

    alert(result);//"con,bon,son,fon"

    localeCompare()方法用于比较两个字符串,字符串在字母表排在参数之前返回负数,排在之后返回正数,等于返回0;

    var num="body";

    alert(num.localeCompare("cat"));//-1

    alert(num.localeCompare("body"));//0

    alert(num.localeCompare("ace"));//1

  • 相关阅读:
    Sublime Text 3 免费注册方法(福利)
    点击查看大图滑动预览(h5,pc通用)
    react中简单倒计时跳转
    mui.ajax中文乱码
    pycharm的一些快捷键
    Flex
    justify-content
    mysql分组,行转列
    前端资源教程
    mui初级入门教程(七)— 基于native.js的文件系统管理功能实现
  • 原文地址:https://www.cnblogs.com/guoxihong/p/5372213.html
Copyright © 2011-2022 走看看