-
Object
- constructor
- instanceof
- prototype
-
String
- charAt(),返回指定下标的字符
"429A3 809".charAt(3) //"A"
"429A3 809".charAt(1) //"2" - charCodeAt(),返回指定下标的字符的Ascii编码
"4293 809".charCodeAt(4) //32 空白的编码
"4293 809".charCodeAt(3) //51 数字3的编码
"429a3 809".charCodeAt(3) //97 字母a的编码
"429A3 809".charCodeAt(3) //65 字母A的编码
把对应位置的字符转成Ascii编码 , 小写字母从97开始 。
空白是从32开始, 数字是从49开始,等等255之间的。但是中文都是大于256的。 - indexof(""),返回从前向后搜索到的第一个子串的第一个字符的下标,找不见则返回-1,
"Hello world world!".indexOf("world") //6
判断能否找见用
str.indexof() !==-1 //true ,能找见 - lastIndexof("")
"Hello world world!".lastIndexOf("world") //12 - localeCompare()返回1,-1或者0 等价于,一般用 >和<
- 正则相关的 replace(),search(),split(),后面会讲到
- slice(-5)选择或者提取部分字符(负数代表倒着数),与substring()不支持负数参数,不能倒着数,性能较好。
-
总结
indexof.jpg
-
Function
-
调用fn方法本身
fn.call(1,"a","b");
fn.apply(1,["a","b"]);//只有两个参数的call().
注意
所有方法都是对象,都有构造方法;
这些,这一类的对象都是Function的类型的对象所具有的方法。 -
.prototype.call()
fn.length//参数的个数
fn.name
function s(){};s.name//"s" -
arguments.callee 作用等价于方法名//获取方法本身,适用于匿名方法或者定义了名字但是访问不到【里外有同名的方法时】
-
总结
非显示定义的Function对象.jpg
Function拼接json字符串.jpg
Function严格模式.jpg
callee.jpg
-
Date
Date的方法注意两点
- getDay()和getMonth()的返回值
- new Date()支持的参数格式有限。不提倡使用
作业:对Date进行扩展。
-
Array
22ke 55;00min
-
pop()/push() ,
-
shift()/unshift(),
-
slice()/splice(),
-
sort()/reverse(),
-
join/concat()
-
取一个500到1000的随机数
( Math.random() * 500+500 ) | 0
提示:
【Math.random()返回0-1之间的小数,a | 0 是对a取整】 -
类数组方法转换
【使用以下方法类数组对象,就可以使用数组原型才有的方法】
(function(){
var arry = [].slice.call(arguments,0,2)
console.log(arry.join("+"));
})(1,2,3,4,5) // 1+2
(function(){
var arry = [].splice.call(arguments,0,arguments.length)
console.log(arry.join("+"));
})(1,2,3,4,5) // 1+2+3+4+5
-
-
JS 顶层的类型对象 RegExp 正则表达式
显式写法 : / /
非显式 :new RegExp();
-
.test(),元字符和量词
[$].png
/a/.test("aaabec") // true 匹配到字符,找子串的
* 任意个,
? 0个或者一个【没有/有一个】,
+ 大于等于1个【至少一个】,最常用的。
/^a/ 以a开头,
/a$/ 以a结尾,
/^a$/ 以a开头,并且以a结尾
需要转义的有
/
-
方括号,表示找区间范围内的字符
/[0-9]{5}/.test("11111sxdc") //true,找子串,5个连续数字组成的片段
/[a-z]{5}/.test("11111sxdc") //false,找子串,5个连续字母组成的片段
/[a-z0-9_-]{5}/.test("11111sxdc_--") //true,找子串
/[a-z0-9_\u00ff]{5}/.test("11111sxdc_--") //false,找子串
汉字有专门的正则,
/[^\uFF00-\uFFFF]{5}/.test("我--") //false
/[^\uFF00-\uFFFF]{5}/.test("我e34_--") //true
【Unicode编码的开头,自己查】
字符
/\w{20}/.test("25235sddjs_7w72hh_") // \w代表单词字符,包括字母数字下划线.
/[\w$]{20}/ //只要不是特殊的直接往后跟写,
/[\w$\s]{20}/ // \s 元字符里叫空白, 包括空格,tab键
\b //除字母数字下划线以外的都是,特点是啥也没有也叫\b,只有两边是。
\b 元字符匹配单词边界。
如果未找到匹配,则返回 null。
提示:\b 元字符通常用于查找位于单词的开头或结尾的匹配。
不应用于.test()
正则一般是/^ $/
,然后补上中间的内容,这样就是从头匹配到尾,$
表示结尾,^
表示开头。但是若在[]
里$
就代表一般字符,而^
代表非区间
/^\w+$/i.test("sdusu77273_") //true
正则对象的方法 -
.test() :能否子串片段
-
.exec() :返回匹配到的子串的数组,每次执行只匹配一个作为数组返回,继续就匹配下一个,如果未找到匹配,则返回值为 null。。
exec.jpg
/[^\w+$]/i.exec("sdusu77273_-$") //["-"]
(/W3School/g).exec("Visit W3School, W3School is a place to study ");
["W3School"]
注意
循环,不写退出条件,会把浏览器搞挂的
- 支持正则表达式的** String 对象的方法**:
- .match(),返回匹配到的子串的数组,该数组的内容依赖于 regexp 是否具有全局标志 g。找不到则返回 null。
match.jpg - .search(),返回下标,对大小写敏感
返回第一个与 regexp 相匹配的子串的起始位置,找不到则返回 -1。
search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,不支持负数参数,不能倒着数,性能较好。
search.jpg - .split(),返回数组,以匹配到的子串为分隔符,分隔出项
** stringObject.split(separator,howmany)**- 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
- String.split() 执行的操作与 Array.join 执行的操作是相反的。
split.jpg
- .replace(),返回改变后的新字符串,原对象没变化,不能继续使用,支持i和g,找不到匹配项,原样返回。需要var newVar = oldVar.replace()来接收
replace.jpg-
实例:返回时让每个数字都+1,要求只返回0到9。里面的k不是数字,变成数字用
(k|0)
name = 'a02aa b45bb cc89c';
uw=name.replace(/\d/g, function(k){
return (k+1) % 10;}
);
//"a11aa b11bb cc11c"
name = 'a02aa b45bb cc89c';
uw=name.replace(/\d/g, function(k){
return ((k | 0)+1) % 10;}
);
//"a13aa b56bb cc90c" -
元字符的
[]
加与不加含义不同;只有一个元字符加不加不影响,
/[\d$]/ 表示匹配一个数字或者一个$,
/\d$/ 表示匹配一个数字加(跟上)一个$,加起来一起作为匹配规则
-
网友评论