五.引用类型

1.引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但这种称呼并不妥当。

2.var obj={} //与var obj=new Oject()相同

3.obj[name]与obj.name:通常,除非必须使用变量来访问属性,否则我们建议使用点表示法

4.检测数组:value instanceof Array;Array.isArray() //更兼容

5.数组转换字符串:join()  var colors = ["red", "green", "blue"];alert(colors.join(","));      //red,green,blue alert(colors.join("||"));      //red||green||blue;

        如果数组中的某一项的值是 null 或者 undefined,那么该值在 join()、toLocaleString()、toString()和 valueOf()方法返回的结果中以空字符串表示

6.栈方法:

        unshift()与 shift()的用途相反:它能在数组前端添加任意个项并返回新数组的长度

       如果数组中的某一项的值是 null 或者 undefined,那么该值在 join()、toLocaleString()、toString()和 valueOf()方法返回的结果中以空字符串表示

7.重排序:

    数组中已经存在两个可以直接用来重排序的方法:reverse()和 sort(函数)   

数组排序:冒泡排序

8.Date类型:Date.parse()和 Date.UTC()。其中,Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日

期的毫秒数var someDate = new Date(Date.parse("May 25, 2004"));如果传入 Date.parse()方法的字符串不能表示日期,那么它会返回 NaN。实际上,如果直接将表示日期的字符串传递给 Date 构造函数,也会在后台调用 Date.parse()。Date.UTC()方法同样也返回表示日期的毫秒数,但它与 Date.parse()在构建值时使用不同的信息var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));

    ECMAScript 5 添加了 Data.now()方法,返回表示调用这个方法时的日期和时间的毫秒数。ECMAScript 5 添加了 Data.now()方法,返回表示调用这个方法时的日期和时间的毫秒数var start = +new Date(); var start = Date.now(); 

9.RegExp类型

    g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;

     i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;

    m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。


10.Function类型

        函数没有重载

          函数声明与函数表达式:解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。

//返回20
//第一行返回“unexpected identifier”(意外标识符)错误,不会执行到下一行

            作为值的函数:

            指明按照哪个属性来排序:

        函数内部属性:arguments(保存函数参数,callee属性指向用油这个arguments对象的函数) 和 this(是函数据以执行的环境对象,当在网页的全局作用域中调用函数时,this 对象引用的就是 window),es5新加的属性:caller(当前函数的函数引用,上级函数,如果是在全局作用域中调用当前函数,它的值为 null) arguments.callee.caller

            函数的名字仅仅是一个包含指针的变量而已。因此,即使是 在不同的环境中执行,全局的 sayColor()函数与 o.sayColor()指向的仍然是同一 个函数


阶乘//消除紧密耦合的现象,在这个重写后的 factorial()函数的函数体内,没有再引用函数名 factorial。这样,无论引用 函数时使用的是什么名字,都可以保证正常完成递归调用。argument.callee()是当前函数的引用



//this 
//caller

        函数属性和方法:每个函数都包含两个属性:length(函数希望接收的命名参数的个数) 和 prototype。每个函数都包含两个非继承而来的方法,用途都是在特定的作用域中调用函数:apply()和 call(),接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中,apply()第二个参数可以是 Array 的实例,也可以是arguments 对象,call()参数必须展开,它们真正强大的地方是能够扩充函数赖以运行的作用域。

this是运行函数的作用域,使用 call()(或 apply())来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系,可与this进行比较

        ECMAScript 中的引用类型而言,prototype 是保存它们所有实例方法的真正所在。换句话说,诸如toString()和 valueOf()等方法实际上都保存在 prototype 名下,只不过是通过各自对象的实例访问罢了。prototype 属性是不可枚举的,因此使用 for-in 无法发现。

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

sayColor()调用 bind()并传入对象 o,创建了 objectSayColor()函数。object�SayColor()函数的 this 值等于 o,因此即使是在全局作用域中调用这个函数,也会看到"blue"。

    

    11.基本包装类型:ECMAScript 还提供了 3 个特殊的引用类型:Boolean、Number 和 String

为了便于操作基本类型值,ECMAScript 还提供了 3 个特殊的引用类型:Boolean、Number 和 String。var s1 = new String("some text"); var s2 = s1.substring(2); s1 = null;

            使用 new 调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的

            .toFixed():保留的小数位,四舍五人, toExponential():法返回以指数表示法,,toPrecision():根据要处理的数值决定到底是调用 toFixed()还是调用 toExponential()。

            String类型:

                                    字符操作:charAt()和 charCodeAt()

返回指定位置的字符
返回指定位置的字符编码
ie8以上

                                    字符串操作: concat()、slice(起始位置,结束位置(为负数时从尾部开始找))、substr(起始位置,长度)和 substring(起始位置,结束位置(为负数时补0))

                                        concat()是专门用来拼接字符串的方法,更多的用+

slice()方法会将传 入的负值与字符串的长度相加,substr()方法将负的第一个参数加上字符串的长度,而将负的第二个 参数转换为 0。最后,substring()方法会把所有负值参数都转换为 0

                                        字符串位置方法:indexOf(查询的字符,从哪个位置开始可选数字)和 lastIndexOf(查询的字符,从哪个位置开始)

                                          trim()方法:删除前置及后缀的所有空格,创建一个字符串的副本

                                           字符串大小写转换:toLowerCase()、toLocaleLowerCase()、toUpperCase()和 toLocaleUpperCase()

在不知道自己的 代码将在哪种语言环境中运行的情况下,还是使用针对地区的方法更稳妥一些toLocaleLowerCase()和 toLocaleUpperCase()

                                            字符串的模式匹配方法:match()和search()方法只接受一个参数,要么是一个正则表达式,要么是一个 RegExp 对象

                                               replace():替换,split():符将一个字符串分割成多个子字符串,并将结果放在一个数组中,第二个参数用于指定数组的大小。

                                                localeCompare()方法:这个方法比较两个字符串,返回-1,0,1

                                                fromCharCode()方法:接收一或多个字符编码,然后将它们转换成一个字符串。


单体内置对象:

       1. Global对象:全局对象

                a.URI 编码解码方法:encodeURI()和 encodeURIComponent(),encodeURIComponent() 方法更多用。解码:decodeURI()和decodeURIComponent()。

                   b.eval()方法:就像是一个完整的 ECMAScript 解析器

能够解释代码字符串的能力非常强大,但也非常危险。因此在使用 eval()时必 须极为谨慎,特别是在用它执行用户输入数据的情况下。否则,可能会有恶意用户输 入威胁你的站点或应用程序安全的代码(即所谓的代码注入).

                    c.Global 对象的属性:特殊的值undefined、NaN 以及 Infinity 都是 Global 对象的属性,Object 和 Function,也都是 Global 对象的属性。

                    d.window对象

        2.Math对象:ECMAScript 还为保存数学公式和信息提供了一个公共位置,即 Math 对象。

            a. min()和 max()方法

apply()确定变量在函数中的作用域

              b.舍入方法:Math.ceil()向上舍入、Math.floor()向下舍入和 Math.round()标准舍入

                c.random()方法:Math.random()方法返回大于等于 0 小于 1 的一个随机数

                        利用 Math.random()从某个整数范围内随机选择一个值。值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

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

推荐阅读更多精彩内容

  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,031评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  • 本章内容 使用对象 创建并操作数组 理解基本的 JavaScript 类型 使用基本类型和基本包装类型 引用类型的...
    闷油瓶小张阅读 674评论 0 0
  • 春深听雨眠,小院柳翩翩。 梦里乾坤大,绝尘上九天。 平起平收,平水韵,下平一先。 图片来自网络。
    连山归藏_7de2阅读 253评论 2 7
  • 文/迷鹿 一 、终于安了一半的心 2018年6月23日到达深圳第三天。 我很幸运面试的第一家公司就成功了。 我焦灼...
    谜鹿er阅读 228评论 0 0