javascript 学习要点

来源:互联网 发布:剑三炮哥成男脸型数据 编辑:程序博客网 时间:2024/05/22 17:07

函数

1、每个函数对象在创建时随带有一个prototype属性,它的值是一个拥有constructor属性且值为该函数的对象;这和隐藏链接到Function.prototype完全不同。到底有什么不同呢,且看下次分解

2、在js中函数有四种调用模式:方法调用模式,函数调用模式,构造器调用模式和apply调用模式;
      如果在一个函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会绑定到那个新对象上;
      通过new前缀的方式来调用一个函数,且该函数的返回值不是一个对象,则返回this(该新对象);

正则表达式

1、捕获型

括号匹配:(x),匹配x并记住这个匹配
比如在模式/(for) (bar) \1 \2/中,(for)和(bar)匹配字符串"for bar for bar"中的第一个和第二个单词,\1和\2匹配最后两个单词;
      
var reg = /(foo) (bar) \1 \2/;var result = reg.exec("foo bar foo bar");result is["foo bar foo bar", "foo", "bar"]
var reg = /(foo) (bar)/;var result = reg.exec("foo bar foo bar");undefinedresult["foo bar", "foo", "bar"]



2、非捕获型

(?:x):匹配x但不记住该匹配
var reg = /(?:foo) (?:bar)/;var result = reg.exec("foo bar foo bar");undefinedresult["foo bar"]

可以看到,结果少了两项:match1和match2

3、向前正向匹配

x(?=y):表示x后面紧跟着y,但y不在匹配结果中;匹配后,文本将倒回到它开始的地方,实际上并不匹配任何东西
var reg = /foo(?=bar)/;var result = reg.exec("foobar foobar");undefinedresult["foo"]

4、向前负向匹配

x(?!y):x后面紧跟着的不是y;类似于向前正向匹配,但只有当它匹配失败时它才进行匹配;
var result = /\d+(?!\.)/.exec("3.141")undefinedresult["141"]

可以看到y不在匹配结果中

5、x|y:匹配x或y

var result = /green|red/.exec('red apple')undefinedresult["red"]



      
0 0
原创粉丝点击