美文网首页
五.引用类型

五.引用类型

作者: 韭菜过敏者 | 来源:发表于2018-11-20 17:01 被阅读0次

    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() * 可能值的总数 + 第一个可能的值)

    相关文章

      网友评论

          本文标题:五.引用类型

          本文链接:https://www.haomeiwen.com/subject/bevnfqtx.html