javascript基本包装类型Boolean、Number、String

1.三种特殊的引用类型:Boolean、String、Number
每当读取一个基本类型的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能调用一些方法来操作这些数据
我们不建议直接实例化包装好的引用类型,原因在于在使用typeof和instanceof检测基本类型数值时结果完全不同

var numberObject = new Number(10);
var numberValue = 10;
alert(typeof numberObject);//object
alert(typeof numberValue);//number
alert(numberObejct instanceof Number);//true
alert(numberValue instanceof Number);//false

在使用typeof操作符检测基本类型数值时,始终都会返回number
而在测试Number对象时,则会返回Object。类似的,Number对象是Number类型的实例,而基本类型的数值不是。
2.Number:valueOf(),返回对象表示的基本类型的数值
        toLocalString()返回字符串形式的数值
        toString()返回字符串形式的数值,可以传递一个表示基数的参数
        toFixed()按照指定的小数位返回数值的字符串表示,适合用于处理货币值
        toExponential()返回以指数表示(也称e表示法)表示的数值的字符串形式,接收一个参数用于指定小数位数
        toPrecision()可能返回固定大小的格式,也可能返回指数格式,具体规则是看哪种格式最合适,接收一个参数用于表示数值的所有数字的位数
3.String:
    属性:
    length:表示字符串中含有字符的长度。
    方法:
    (1)charAt()和charCodeAt()
        这两个方法都接受一个参数,即一个基于0的字符位置,其中charAt()方法以单字符的形式返回给定位置的那个字符
    

    var stringValue = "Hello,world!";
        alert(stringValue.charAt(1));//"e"    

        alert(stringValue.charCodeAt(1));//"101"    


        这个例子输出的"101"也就是"e"的字符编码
        
    (2)concat():用于将一或多个字符串拼接,可以接受若干个参数,表示拼接若干个字符串,返回拼接得到的新字符串,不影响原来的字符串
        另外,使用"+"操作符也可以用于字符串拼接
    (3)slice()、substr()、substring()
        基于子字符串创建新字符串
        这三个方法都返回基于被操作字符串的一个子字符串
        接受一到两个参数:第一个参数表示子字符串的开始位置,第二个参数表示子字符串到哪里结束
        如果不指定第二个参数,则表示将字符串的末尾作为结束位置。
        这三个方法不会修改字符串本身的值
        
        substr第二个参数指定的是返回的字符串个数
      

 var stringValue = "hello world";
        alert(stringValue.slice(3));//"lo world"
        alert(stringValue.substring(3));//"lo world"
        alert(stringValue.substr(3));//"lo world"
        
        alert(stringValue.substring(3,7));//"lo w"
        alert(stringValue.substr(3,7));//"lo worl"
        alert(stringValue.slice(3,7));"lo w"        
        


        假如传入负值
        slice()始终将负值与字符串长度相加
        substr()将第一个负值参数与字符串长度相加,第二个转换为0
        substring始终将负值参数转换为0
    (4)字符串位置方法    indexOf()和lastIndexOf()
        这两个方法都是从一个字符串搜索给定的子字符串,然后返回子字符串的位置,如果没有找到字符串则返回-1
        区别在于:indexOf()从开头向后搜索子字符串,而lastIndexOf()从字符串的末尾向前搜索子字符串。
        这两个方法都可以接受可选的第二个参数,表示从哪个位置开始搜搜
        
        例如:查找字符串中所有的"o"字符
        

        var stringValue = "Lorem ipsum dolor sit amet,consectetur adipisicing elit";
        var position = new Array();
        var pos = stringValue.indexOf("o");
        
        while(pos>-1){
            position.push(pos);
            pos = stringValue.indexOf("o",pos+1);
        } 
        alert(position);//3,24,32,35,52   

   
    (5)trim()方法:这个方法会创建一个字符串的副本,删除前置以及后缀的空格,然后返回结果
        trimLeft(),trimRight()分别用于删除字符串开头和末尾的空格(Firefox3.5+、Safri5+、Chrome8+支持)
    (6)    大小写转换
        toLowerCase()和toUpperCase()
        toLoaclLowerCase()和toLocalUpperCase()是针对特定地区的实现
    (7)字符串的模式匹配方法

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


4.单体内置对象
内置对象就是我们不必显式的实例化的对象,在程序执行之前就已经存在
例如:Object,Array,String,Math和Global

Global对象:不属于任何其他对象的属性和方法,最终都属于Global对象,例如:全局属性和方法
    方法:(1)URI编码方法
            Global的encodeURI()和encodeURIComponent()方法可以对URI进行编码,以便发送给浏览器
            有效的URI中不能包含某些特殊的字符,例如空格,URI编码方法可以用特殊的utf-8编码替换所有无效的字符,从而让浏览器能够理解和接受
            encodeURI()编码的结果是除了空格被替换为%20,其他的字符都原封不动,它不会对本身包含的术语URI的特殊字符进行编码,例如冒号,正斜杠,问号和井号
            encodeURIComponent()则会对它发现的任何非标准字符进行编码
            因此,对于整个URI可以使用encodeURI(),但是对于URI中的某一段只能使用encodeURIComponent()
        (2)解编码方法
            decodeURI()对应encodeURI()
            decodeURIComponent()对应encodeURIComponent()
           
            decodeURI()可以将%20替换为空格但是不会对%23进行替换,因为%23代表#,它是有encodeURIComponent()编码而来
            因此,第一次调用decodeURI(),%20被替换为空格,第二次调用encodeURIComponent()得到了一个未经转义的字符串
            (但是这个字符串并不是一个有效的URI)
            URI方法能够编码所有的Uicode字符
        (3)eval()方法
            这个方法就像是一个完整的ECMAScript解析器,它只接受一个参数,即要执行的ECMAScript代码
            eval("alert('hi')");
            等价于alert("hi");
            eval()执行的代码被认为是包含此次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链
            这意味着eval()可以引用在包含环境中定义的变量
          

  var msg = "123";
            eval("alert(msg)");
            
            eval("function sayHi(){alert('hi')}");
            sayHi();//在调用eval的外部代码中引用这个函数

 在严格模式下,在外部访问不到eval()中创建的任何变量或函数
            
    属性:特殊的值undefined、NaN、以及Infinity都是Global对象的属性。
Window对象:ECMAScript虽然没有指出如何直接访问Global对象,
            但web浏览器都是将这个全局对象作为window对象的一部分加以实现的
            因此,在全局作用域中声明的所有变量和函数,就都成为了window对象的属性
            javascript中的window对象除了扮演ECMAScript规定的Global对象的角色外,还承担了很多倍的任务
Math对象:保存数学公式和信息的一个公共位置
        属性:Math.E,        自然对数的底数,即常量e的值
            Math.LN2         2的自然对数
            Math.LOG2E      以2为底e的对数
            Math.LOG10E
            Math.PI            π的值
            Math.SQRT1_2    1/2的平方根
            Math.SQRT2         2的平方根
            
        方法:
        (1)min()和max()方法
        min()和max()用于确定一组数值中的最小值和最大值
        var max = Math.max(3,54,32,16);
        要找到数组中的最大值或最小值,可以像下面这样使用applay()方法
    

    var value = [1,2,3,4,5,6,7,8];
        var max = Math.max.applay(Math,value);

        这个例子最关键的是将Math作为第一个参数传入,从而正确的设置this值,然后可以将任何数组作为第二个参数
        
        (2)舍入方法
        Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数
        Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数
        Math.round()执行标准舍入,即四舍五入为最接近的整数
        
        (3)random()方法
        值 = Math.floor(Math.random()*可能的值+第一个可能的值)
        
        或者:值 = Math.floor(Math.random()*(最大值-最小值+1)+最小值)
        
        例如:得到一个1到10之间的数值

  var num = Math.floor(Math.random()*10+1);

        得到一个2到10之间的数

  var num = Math.floor(Math.random()*9+2);

   (4)其他方法
        Math.abs(num):返回绝对值
        Math.exp(num):返回Math.E的num次幂
        Math.log(num):返回num的自然对数
        Math.pow(num,power):返回num的power次幂
        Math.sqrt(num):返回num的平方根
        Math.acos(x):返回x的反余弦值
        Math.asin(X):返回x的反正弦值
        Math.atan(x):返回x的饭正切值
        Math.sin(x):返回x的正弦值
        Math.cos(x):返回x的余弦值
        Math.tan(x):返回x的正切值
       
        总结:
        1.    对象再javaScript中被称为引用类型的值,而且有一二写内置的引用类型的可以用来创建特定的对象
        2.    Object是一个基础类型,其他类型都是从Object继承了基本的行为
        3.    Array类型是一组值的有序列表,同时还提供了操作和装换这些值的计算功能,
        如操作方法concat,slice,splice,
        栈方法和队列方法pop,push,shift,unshift
        重排序方法reverse,sort
        转换方法toString,toLocalString,valueOf
        位置方法indexOf,lastIndexOf
        迭代方法every、some、filter、map、foreach、
        归并方法reduce,reduceRight
        
        4.    函数实际上Function类型的实例,因此函数也是对象,而这一点正是javascript最有特色的地方。
        由于函数是对象,所以函数也拥有方法,可以用来增强其行为    
        因为有了基本包装类型,所以javascript中的基本类型值可以被当做对象来访问。三种最基本的包装类型:Boolean,String,Number
        5.在读取模式下访问基本类型值时,就会创建对应的基本包装类型的一个对象,从而方便了数据操作
        操作基本类型值的语句一旦结束,就会立即销毁新创建的包装对象
        6.在所有代码执行之前,已经有两个对象存在,Global和Math对象
        在大多数ECMAScript实现中都不能直接访问Global对象;不过,Web浏览器实现了承担其角色的window对象
        

猜你喜欢

转载自blog.csdn.net/Milan_KunderLa/article/details/81331968