JavaScript引用类型

Object类型

创建方式:

1.使用new操作符后跟构造函数

var p = new Object();

2.使用对象字面量,这种方式不会调用构造函数

var p = {

    name:"aaa",

    getName: function(){

           return this.name;

      }

};

属性的访问一般使用点表示法,也支持使用方括号表示法。

Array类型

可以存放任何类型的数据。

创建方式:

1.使用构造函数

var c = new Array();

var c = new Array(20);//length = 20

var c = new Array("red", "blue", "green");

var c = Array();//可以省略new

2.字面量

var c = ['red', 'blue', 'green'];

var c = [];

访问元素

方括号[]加索引值,需要说明的是length不是只读的。

alert(c[0]);

检测数组

isArray(),而不是instanceof。

转换方法

toString()、toLocaleString()、valueOf()

join():示例var x = new Array(10).join("abc");

栈方法

push()、pop()

队列方法

1.shift()、push()

2.unshift()、pop()

重排序方法

reverse()

sort()

操作方法

concat():连接数组和参数,返回新数组

slice():返回子数组

splice():删除,splice(0, 2)删除前两个;插入,splice(2, 0, "red", "green"),位置2插入两个;替换,splice(2, 1, "red"),删除当前位置2的项,然后从2插入。影响原数组,返回删除的项,如果没有删除返回空数组。

位置方法

indexOf()、lastIndexOf()

迭代方法

every:每项都运行给定函数,每项返回true,则返回true;

filter:每项运行给定函数,返回该函数返回true的项组成的数组;

forEach:每项运行给定函数,无返回值

map:每项运行函数,返回调用结果组成的数组

some:每项运行函数,任一项返回true,则返回true

缩小方法

reduce、reduceRight:迭代数组的所有项,然后构建一个最终返回的值。接收两个参数:一个在每一项上调用的函数和(可选)作为缩小基础的初始值。函数有4个参数:前一个值、当前值、项的索引和数组对象。

Date类型

RegExp类型

语法

var  expression = /pattern/flags;

var pattern = new RegExp("字符串", "g/i/m");

pattern:正则表达式

flags:g,表示全局模式;i,表示不区分大小写;m,表示多行模式。

需要转义的元字符:([{\^$|)?*+.]}

举例

字面量模式                 等价的字符串

/\[bc\]at/                   "\\[bc\\]at"

/\.at/                          "\\.at"

/name\/age/              "name\\/age"

/\d.\d{1, 2}/               "\\d.\\d{1,2}"

使用正则表达式字面量和使用RegExp构造函数创建的正则表达式不一样。ECMAScript3中,正则表达式字面量始终会共享一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新实例。

var re = null;

for (int i = 0; i < 10; i++){

    re = /cat/g;

    re.test("catastrophe");

}

for (int i = 0; i < 10; i++){

    re = new RegExp("cat", "g");

    re.test("catastrophe");

}

在第一个循环中,即使是在循环体重指定的,但实际上只为/cat/创建了一个RegExp实例。由于实例属性不会重置,所以在循环中再次调用test()方法会失败。因为第一次调用test找到了cat,但第二次调用时从索引为3的字符开始的,找不到了。由于会测试到字符串末尾,所以下一次再调用时就又从开头开始了。但是第二个循环中每次循环中创建正则表达式,每次都会返回true。ECMAScript5明确规定,使用正则表达式字面量必需像使用RegExp构造函数一样,每次都创建新的RegExp实例。

实例属性

global:布尔值,表示是否设置了g标志;

ignoreCase:布尔值,表示是否设置了i标志;

lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起;

multiline:布尔值,表示是否设置了m标志;

source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。

实例方法

exec():接收一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配的情况下返回null。返回的数组虽然是Array的实例,但包含两个额外的属性:index和input。其中index表示匹配项在字符串中的位置,input表示应用正则表达式的字符串。在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串。

var text = "mom and dad and baby";

var p = /mom( and dad (and baby)?)?/gi;

var matches = p.exec(text);

alert(matches.index);//0

alert(matches.input);//"mom and dad and baby"

alert(matches[0]);//"mom and dad and baby"

alert(matches[1]);//" and dad and baby"

alert(matches[2]);//" and baby"

exec(),即使在模式中设置了全局标志g,它每次也只会返回一个匹配项。在不设置全局标志的情况下,在同一个字符串上多次调用exec将始终返回第一个匹配的信息。而设置了全局标志时,每次调用都会在字符串中继续查找新匹配项。

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

var p1 = /.at/;

var m1 = p1.exec(text);

alert(m1.index);// 0

alert(m1[0]);//cat

alert(p1.lastIndex);//0

m1 = p1.exec(text);

alert(m1.index);// 0

alert(m1[0]);//cat

alert(p1.lastIndex);//0

var p2 = /.at/g;

var m2 = p2.exec(text);

alert(m2.index);// 0

alert(m2[0]);//cat

alert(p2.lastIndex);//0

m2 = p2.exec(text);

alert(m2.index);// 5

alert(m2[0]);//bat

alert(p2.lastIndex);//8

test():接受一个字符串参数。在模式与该参数匹配的情况下返回true;否则,返回false。

构造函数属性

适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。

长属性        短属性        说明

input            $_           最近一次要匹配的字符串

lastMatch      $&          最近一次的匹配项。

lastParen      $+           最近一次匹配的捕获组

leftContext    $、         input字符串中lastMatch之前的文本

multiline        $*          布尔值,表示是否所有表达式都使用多行模式

rightContext   $'         Input字符串中lastMatch之后的文本

段属性要通过[]来访问。

Function类型

没有重载

函数声明和函数表达式

解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用;至于函数表达式,则必须等到解析器执行到他所在的代码行,才会真正被解释执行。即使声明函数的代码在调用它的代码后面,也能把函数声明提升到顶部。

函数内部属性

arguments、this、calle

函数属性和方法

length、prototype

每个函数包含两个非继承而来的方法:apply、call

apply:运行函数的作用域,参数数组。

call:对象,其余参数诸葛列出。

使用call和apply来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。

ECMAScript5中还定义了一个方法bind。这个方法会创建一个函数的实例,其this值会被绑定到传给bind函数的值。

基本包装类型

Boolean、Number、String。

引用类型与基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。这以为着我们不能再运行时为基本类型值添加属性和方法。

String类型

字符方法

charAt、charCodeAt

字符串操作方法

concat  slice  substr substring

字符串位置方法

indexOf lastIndexOf

trim

字符串大小写转换方法

toLowerCase  toUpperCase

字符串模式匹配方法

match 本质上同exec

search 始终是从字符串开头向后查找模式

replace

split

HTML方法

anchor

big

bold

fixed

fontcolor

fontsize

italics

link

small

strike

sub

sup

单体内置对象

Global对象

URI编码方法

encodeURI 整个URI 不会对本身属于URI的特殊字符进行编码,如冒号、正斜杠、问号和井号

encodeURIComponent 某一段

对应的decodeURI decodeURIComponent

eval

Math对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容