005——引用类型


引用类型,也叫对象定义,描述一类对象所具有的属性和方法。
大多数引用类型的值都是Object类型的实例。


创建Object实例方法
 1、new Object
 2、var person = { ... }


Array类型
 1、new Array(3)
 2、var color = [‘red’,’blue’,’green’]
 
 3、转换方法:toLocaleString()、toString、valueOf()
 4、栈方法:push()、pop() 尾部插入、删除数据
 5、队列方法:shift(),unshift 前面插入、删除数据
 6、重新排序方法:arr.sort(selfDefienCompareFunc)  selfDefienCompareFunc(nextVal, currentVal) {return (nextVal - currentVal)} // 升序排,降序则返回currentVal-nextVal
 7、操作方法:concat()、slice(start,end)【end可省略,表示到结尾】、splice()【删除splice(startindex, length),插入splice(startIndex,length,insertParams),替换splice(startIndex,length,insertparams1,insertparams2...)】
 8、位置方法:indexOf()、lastIndexOf
 9、迭代方法:every()、filter()、forEach()、map()、some()
 10、归并方法:reduce()、reduceRight(),从左、右迭代,并最终返回新的值,如,sum = [1,2,3,4,5].reduce((pre,cur,index,arr) => {return pre+cur}),alert(sum) // 15

Date类型
 1、Date.parse()、Date.UTC()——返回毫秒时间戳,接收参数不同
 2、继承的方法:toLocaleString()、toString、valueOf()
 3、格式化日期:toDateString()、toTimeString()、toLocaleDateString()、toLocaleTimeString()、toUTCString()
 4、日期/时间组件方法:getTime()、getFullYear()。。。

RegExp类型
正则表达式:var exoression =/pattern/ flags   // pattern表简单或复杂的正则表达式,flag有g【全局】、i【不区分大小写】、m【多行模式】
如,/at/g 【匹配at】、/[bc]at/i【匹配bat或cat,不区分大小写】、/.at/gi【匹配at结尾的3个字符的组合,不区分大小写】
正则中存在元字符必须转义,包括: ([{\^$|)?*+.]}
如,匹配bat或cat,不区分大小写/[bc]at/I  => /\[bc\]at/i    匹配at结尾的3个字符的组合,不区分大小写/.at/gi => /\.at/gi

RegExp另外创建方式:var re = new RegExp(‘\\[bc\\]at’, “i"),需要对字符串进行双重转义。 re.test(‘cat’) // true
1、RegExp实例属性: var pattern1 = /\[bc]at/i;
    global:布尔值,是否设置g标识,如,pattern1.global // false
    ignoreCase:布尔值,是否设置I标识,如, pattern1.ignoreCase //true
    lastIndex:整数,标识开始搜索下一个匹配项的字符位置,从0开始,如,pattern1.lastIndex // 0
    multiline:布尔值,表示是否设置了m标识,如,pattern1.multiline // false
    source:正则表达式的字符串表示,按照字面量形式而非传入构造函数,如,pattern1.source // “\[bc]at”

2、RegExp实例方法
    exec(param), param表示被匹配的字符串,返回数组
    exec设置全局标识(g),则每次返回依次遍历到的匹配项,如果没有(g),则每次只返回第一个匹配项值
    
    test(param),匹配则返回true,否则返回false,pattern1.test(text) 

    toLocaleString():返回正则表达式的字面量
    toString():返回正则表达式的字面量

3、RegExp构造函数属性
    var text = ’this has been a short summer’;
    var pattern = /(.)hort/g;

    input             $_    最近一次要匹配的字符串,RegExp.input // this has been a short summer    RegExp["$_"]
    lastMatch         $&    最近一次的匹配项,RegExp.lastMatch // short                            RegExp[“$&"]
    lastParen         $+    最近一次匹配的捕获组,RegExp.lastParen // s                             RegExp[“$+"]
    leftContent       $`    input字符串中lastMatch之前的文本,// this has benn a                    RegExp[“$`"]
    multiline         $*    布尔值,表示是否所有表达式都使用多行模式 // false                          RegExp[“$*"]
    rightContent      $’    input字符串中lastMarch之后的文本 // summer                             RegExp[“$’"]


4、局限性,不支持高级正则表达式


Function类型 —— 函数时对象,函数名是指针
函数定义的三种方式
function sum(a,b) { return a + b }  // 函数声明
var sum = function(a,b) {return a + b}; // 函数表达式
var sum = Function(“a”,”b”,”return a + b”); // 构造函数,最后一个参数被当做函数体,不推荐

1、没有重载——后面函数覆盖前面函数
2、函数声明与函数表达式——解析器函数声明时,有一个函数声明提升的过程,读取并将函数声明添加到执行环境中,表函数达式在执行到函数所在语句之前,变量都不会保存对函数的引用
3、作为值的函数 function callSomeFunction(someFunction, someArgs) { return someFunction(someArgs) }
4、函数内部对象,
    arguments:保存函数参数,其中有属性callee,是一个指针,指向拥有arguments对象的函数,严格模式下不可用,默认undefined
               例如,递归调用时,function factorial(num){if(num<=1){return -1;} else {return num*arguments.callee(num-1)}} // 等同于factorial*(num-1)
    this:引用执行环境对象
    caller:保存了调用当前函数的函数的引用。
            例如,function outer(){inner()}   function inner(){alert(inner.caller);} outer()  // inner.caller指向outer,建议使用arguments.callee.caller
5、函数属性和方法
    length:函数希望接收的命名参数的个数
    prototype:保存函数所有实例方法
        toString()
        toLocaleString()
        valueOf()
        apply(作用域,传入参数)  // 传入参数需为arguments对象or数组
                              // 如,function sum(d1, d2) {return d1+d2} 
                              //    function applySum1(d1,d2) {return sum.apply(this, arguments);}
                              /     function applySum2(d1,d2) {return sum.apply(this, [d1,d2]);}
        call(作用域,传入参数)   // 传入参数需为单个参数,逐个列举
                              // 如, function callSum(d1,d2) {return sum.call(this, d1, d2);}
       // 严格模式下,未指定环境对象而调用函数,this值不会转型为window,除非明确把函数添加到某个对象或调用apply or call,否则this将是undefined
       // apply、call的真正用途——扩充作用域

       bind() 创建函数的实例,bind(param) param作为参数传递给函数。


基本包装类型
Boolean、String、Number
创建类型实例 => 实例调用指定方法 => 销毁实例
new 调用基本包装类与直接调用同名函数不同,如, Number(‘25’) // number类型,和new Number(‘25’) //  object类型

1、Boolean —— 不建议使用
    重写valueOf返回基本类型true或false
    重写toString,返回基本类型true或false
    new Boolean(false) && true => true ,原因,new Boolean是falseObject,对象类型转型之后为true
    基本类型typeOf返回true或false,object类型返回object

2、Number
    valueOf、toLocaleString、toString重写
    toFixed()保留几位小数,如var num=10.005; alert(num.toFixed(2)) // 10.00 
    toExponential() 格式化数值,返回以指数表示法(也称e表示法)表示数值的字符串形式。 var num=10; alert(10.toExponential(1)) // “1.0e+1”
    toPrecision() 返回固定大小(fixed)格式,也可能返回(exponential)格式,具体看哪个格式合适。
                  如,var num=99,alert(num.toPrecision(1)) // “1e+2”,即100,alert(num.toPrecision(2)) //“99”,alert(num.toPrecision(3)) // “99.0"

3、String
    charAt
    charCodeAt
    concat
    slice
    substr
    substring
    indexOf
    lastIndexOf
    trim
    toLowerCase
    toLocaleLowerCase
    toUpperCase
    toLocaleUpperCase
    match // 同RegExp的exec,返回数组
    search // 返回第一个匹配项索引
    replace // 传入两个参数,ori,new,用new替换ori,ori可以是字符串也可以是正则,new可以是字符串也可以是函数
    htmlEscape 转义4个字符,<、>、&、""
    split 分隔字符串并输出数组传入一个参数,可以是字符也可以是正则表达式
    localeCompare 比较两个字符串
                var val=“yellow”;
                alert(val.localeCompare(“brick”)) // 1
                alert(val.localeCompare(“yellow”)) // 0
                alert(val.localeCompare(“zoo”)) // -1
    fromCharCode 字符编码型
    
    HTML方法:格式化HTML的需求。。。

单体内置对象
1、global 不属于任何对象的属性和方法最终都是global的属性和方法。isNaN()、isFinete()、parseInt()、paeseFloat()
    URI编码:对URI(Uniform Resource Identifiers,通用资源识别码)进行编码,以便发送给浏览器
        encodeURI:主要用于整个URI,不会对本身属于URI的特殊字符(冒号、正斜杠、问号、井字号)进行编码。
        encodeURIComponent:主要用于URI中的某一段,对任何非标准字符全部编码
        
        decodeURI:对encodeURI的编码进行解码
        decodeURIComponent:对encodeURIComponent的编码进行解码
    eval()方法:一个ECMAScript解析器,只接收一个参数,就是需要执行的ECMAScript字符串代码。eval执行的代码拥有与eval同样的执行环境和作用域链。严格模式不适用
    
    Global对象的属性:undefined、NaN、Infinity、Object、Array、Function、Boolean、String、Number、Date、RegExp、Error、EvalError...

    window对象:ECMAScript虽然没有明确指出如何直接访问Global对象,但web浏览器都是将这个全局对象作为window对象一部分加以实现。因此,全局作用域中所有变量和属性也就成了window对象的属性。
        

2、Math对象
    Math对象的属性
        Math.E                 // 自然对数底数,e的值
        Math.LN10              // 10的自然对数
        Math.LN2               // 2的自然对数
        Math.LOG2E             // 2为底e的对数
        Math.LOG10E            // 10为底e的对数
        Math.PI                // π的值
        Math.SQRT1_2           // 1/2的平方根(即2的平方根的倒数)
        Math.SQRT2             // 2的平方根
    min()和Max()方法,Math.max.apply(Math, arrs)
    舍入方法:
        ceil()                 // 向上舍入
        floor()                // 向下舍入
        round()                // 标准舍入
        
    random方法:返回介于0~1之间的随机数
    其他方法:
        abs(num)               // 绝对值
        exp(num)               // Math.E的num次幂
        log(num)               // num的自然对数
        pow(num,power)         // num的power次幂
        sqrt(num)              // num的平方根

        acos(x)                // x的反余弦值
        asin(x)                // x的正弦值
        atan(x)                // x的反正切值
        atan2(y,x)             // y/x的反正切值
        cos(x)                 // x的余弦值
        sin(x)                 // x的正弦值
        tan(x)                 // x的正切值
        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值