JavaScript string对象、Number对象、Date对象、正则对象、JSON对象

1.string对象

(1)String.fromCharCode()

参数为一个或数值,代表Unicode码点,返回值是这些码点组成的字符串。该方法不支持Unicode码点大于0xFFFF的字符,即十进制的65535.

String.formCharCode();     //""
String.fromCharCode(97);   //"a"
string.formCharCode(104,101,101,108,111);  //"hello"

(2)charAt(下标):返回指定位置的字符 ,若参数为负数,或大于等于字符串的长度,charAt返回空字符串。

(3)charCodeAt()

参数若为空,则返回字符串中第一个字符的Unicode码点,否则返回指定位置的码点,若为负数或大于字符串中字符个数,则返回NaN.

("abc").charCodeAt();   //97
("abc").charCodeAt(1);  //98

("abc").charCodeAt(-1); //NaN
("abc").charCodeAt(4);  //NaN

(4)concat():用于连接字符串,返回组成的字符串,原字符串不变。

//例1
var str1 = "aaa";
var str2 = "bbb";

str1.concat(str2);  //"aaabbb"
str1  //"aaa"

//例2
'a'.concat('b','c');  //"abc"

//例3
var one = 1;
var two = 2;
var three = '3';

"".concat(one,two,three);  //"123"
one + two + three ;  //"33"

(5)slice(起始位置(必需),结束位置(可无)):从原字符串取出字符串并返回,不改变原字符串。若起始位置大于结束位置,则返回空字符串。

"javaScript".slice(0,4);  //"java"
"javaScript".slice(4);    //"Script"

"javaScript".slice(2,1);  //""

(6)substring(起始位置(必需),结束位置(可无)):该方法用于从字符串中取出子字符串并返回,不改变原字符串,与 slice() 方法相似.但是,当起始位置大于结束位置,则substring()会自动更换这两个位置若是参数为负数,则自动转化为0,建议优先使用 slice()。

"javaScript".substring(0,4);  //"java"
"javaScript".substring(4);    //"Script"

"javaScript".substring(10,4); ==> "javaScript".substring(4,10);  //"Script"

"javaScript".substring(-1);   //"javaScript"
"javaScript".substring(4,-1); ==> "javaScript".substring(0,4);  //"java"

(7)substr():用法与 substring() 相同.

(8)indexOf(),lastIndexOf()

(9)trim():去除字符串两端的空格,制表符(\t\v)、换行符(\n)和回车符(\r),返回新字符串,不改变原字符串。

(10)toLowerCase(),toUpperCase()

(11)match():用于匹配原字符串中是否包含某个字符串,若包含,则把该字符串当成数组返回,否则返回 null.

"cat,bat,sat,fat".match("at"); //["at"]
"cat,bat,sat,fat".match("xt"); //null

返回的数组还有 index 和 input 属性,分别表示匹配字符串开始的位置和原始字符串

"cat,bat,sat,fat".match("at"); //["at"]

matches.index // 1
metches.input // "cat,bat,sat,fat"

(12)search(),replace():search() 与 match() 用法相同,但是search() 返回值为匹配的第一个位置,若没有找到,则返回 -1

"cat, bat, sat, fat".search("at") // 1
"cat, bat, sat, fat".search("xt") // -1

replace() 用于替换子字符串,一般情况下,只替换符合条件的第一个字符。

"aaa".replace('a', 'b') // "baa"

(13)split():分割字符串,并把分割后的字符串当成数组返回。可接受第二个参数,第二个参数为返回的数组的长度。

(14)localeCompare():用于比较两个字符串,若返回 -1 ,则表示第二个字符串比第一个字符串大,若返回0,则表示相等,若返回1 ,则表示第一个字符串大于第二个字符串。

localeCompare() 还可以接受第二个参数,用来指定使用的语言。

2.Number对象

(1)toFixed():将一个数转化为指定位数的小数,返回这个小数对应的字符串。toFixed()方法的参数为小数位数,有效范围为0到100,超出这个范围将抛出 RangeError 错误。

(2)toExponential():将一个数转化为科学计数法形式。参数是小数点后有效数字的位数,范围为0到100,超出这个范围,会抛出一个 RangeError 错误。

(3)toPrecision():将一个数转为指定位数的有效数字。参数为有效数字的位数,范围是1到100,超出这个范围会抛出 RangeError 错误。

3.Date对象

(1)toDateString() :返回日期字符串,不含小时、分、秒

(2)toTimeString():返回时间字符串,不含年月日

4.(RegExp)正则对象

(1)exec():用来返回匹配结果,如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回 null。

var s = "_x_x";
var r1 = /x/;
var r2 = /y/;

r1.exec(s);  //["x"]
r2.exec(s);  //null

若正则表达式包含圆括号(组匹配),则返回的数组会包含多个成员,第一个成员是整个匹配的结果,后面的成员就是圆括号对应的匹配成功的组。也就是第二个成员对应第一个括号,第三个成员对应第二个括号,以此类推。

var s = "_x_x";
var r = /_(x)/;

r.exec(s);  //["_x","x"]

input属性:真个原字符串

index属性:模式匹配成功的开始位置(从0开始)

var r = /a(b+)a/;
var arr = r.exec("_abbba_aba");

arr  //["abbba","bbb"]

arr.index  //1
arr.input  // "_abbba_aba"

5.JSON对象

(1)JSON.stringify():将一个值转换为 JSON 格式,并且可以被 JSON.parse() 还原。

JSON.stringify(false);    "false"

JSON.stringify("false") ;  "\"false\""  这是因为将来还原的时候,内层双引号可以让引擎知道这是一个字符串,而不是其他类型

如果对象的属性是 undefined,函数或 XML 对象,则该属性会被JSON.stringify()忽略

var obj = {
  a:undefined,
  b:function(){}
}

JSON.stringify(obj);  //"{}"

如果数组的成员是undefined,函数或 XML 对象,则会被JSON.stringify()转换成 null

var arr = [undefined,function];

JSON.stringify(arr);  //"[null,null]"

正则对象会被转换成空对象

JSON.stringify(/foo/);  //"{}"

JSON.stringify()会忽略对象不可遍历的属性

var obj = {};

Object.defineProperties(obj,{
  "foo":{
      value:1,
      enumerable:true
  },
  "bar":{
      value:2,
      enumerable:false
  }
});

JSON.stringify(obj);  //"{"foo":1}"

JSON.stringify()的第二个参数用来指定需要转换成字符串的属性(第二个参数对数组无效)

var obj = {
   
   'a':111,
   'b':222,
   'c':333
};

var selectedProperties = ['a','b'];
JSON.stringify(obj,selectedProperties);  //"{"a":1,"b":2}"

第二个参数还可以是一个函数,用来更改 JSON.stringify()的值,这个函数是递归处理所有的键,若函数返回 undefined或不返回值,则该属性会被忽略

function f(key,value){  //key和value 分别为对象的键和值
   if(typeof === "number"){
       return value*2;
   }
}

JSON.stringify({a:1,b:2},f);   //'{"a":2,"b":4}'

第三个参数用于增加返回的字符串的可读性,若参数为数字,则在每个属性前面添加空格(空格数<=10),若是字符串,在在每个属性前面添加此字符串(字符<=10)

//例1
JSON.stringify({a:1,b:2},null,2);

/*
"{
  "a":1,
  "b":2
}"
*/

//例2
JSON.stringify({a:1,b:2},null,"|-");


/*
"{
|-"a":1,
|-"b":2
}"
*/

参数对象如果有自定义 toJSON() 方法,那么JSON.stringify() 会使用自定义的toJSON() 方法的返回值。

//例1
var user = {
  firstName:"三",
  lastName:"张",

  get fullName(){
      return this.lastName + this.firstName;
  }
}

JSON.stringify(user);

//"{"firstName":"三","lastName":"张","fullName":"张三"}"

//例2
var user = {
  firstName:"三",
  lastName:"张",

  get fullName(){
      return this.lastName + this.firstName;
  },

  toJSON: function(){
      return {
        name:this.lastName + this.firstName;
      };
  }
}

//JSON.stringify(user);
//"{"name":"张三"}"

toJSON() 方法的另一个应用是将正则表达式转换为字符串,因为 JSON.stringify() 默认不能转换正则对象

//例1 没使用 toJSON() 方法前
var obj = {
  reg = /foo/;
}

JSON.stringify(obj);  //"{"reg":{}}"

//例2 使用toJSON() 方法之后
RegExp.prototype.toJSON = RegExp.prototype.toString;
JSON.stringify(/foo/);  //""/foo/""

(2)JSON.parse():将 JSON 字符串转换成对应的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值