【JavaScript】引用类型

引用类型是一种数据结构,用于将数据和功能组织在一起,相当于Java的类。
对象是某个特定应用类型的实例。

1、Object类型

这里写图片描述

2、Array类型

(1)创建数组

1、使用Array构造函数 var array = new Array(1,2,3);
2、使用数组字面量表示法 var array = [1,2,3];

数组的length属性:通过该属性可以从数组的末尾移除或者添加新项。

var array = [1,2,3];
array.length = 4;
array[3] = 4;
console.log(array);//[1,2,3,4]

(2)检测数组

value instanceof Array;
Array.isArray(value);

(3)栈方法

栈方法,后进先出

push() :接收任意数量的参数,把它们逐个添加到数组末尾,返回修改后数组的长度;
pop():从数组末尾移除最后一项,返回移出的项

    var colors = ['red','green','blue'];
    var count = colors.push('black','white');
    console.log('colors\'s length:' + count);//5
    var item = colors.pop();
    console.log('pop()返回的是:' + item);//white,pop()移出末尾的项,并返回这个项

(4)队列方法

先进先出

shift():移除数组的第一个项并返回该项;
unshift():在数组前端添加任意个项并返回新数组的长度。

colors.push('pink');
    var item2 = colors.shift();//取得第一项
    console.log('shift()返回的是第一项:' + item2);
    var animal = ['dog','miao','bird'];
    var count2 = animal.unshift('people');
    console.log(animal + '数组长度为:' + count2);
    var item3 = animal.pop();
    console.log(item3);

//push():往数组末端添加项;
//pop():从数组末端删除项
//shift():从数组前端删除项
//unshift():从数组前端添加项

(5)操作方法

1)、concat():拼接数组

//concat方法拼接数组
    var name1 = ['vicky','jonhy','jay'];
    var name2 = ['Song','Kong'];
    var name = name1.concat(name2);
    console.log('concat () 拼接数组得到:' + name);

2)、slice():选择数组中的一部分
基于当前数组中的一项或多项创建一个新数组。只有一个参数的话,返回从该参数指定位置开始到当前数组末尾的所有项;有两个参数的话,该方法返回起始和结束位置之间的项,但不包括结束位置的项。slice方法不会影响到原数组

    var number = [0,1,2,3,4,5,6];
    var number3 = number.slice(3);
    console.log('number3:' + number3);
    var number3_5 = number.slice(3,6);
    console.log(number3_5);

3)splice():主要用途是向数组中部插入项,返回的是数组

    var array = [0,1,2,3,4,5,6];
    //删除,2个参数 (要删除的第一项的位置,要删除的项数)
    var remove = array.splice(3,2);
    console.log('array删除了:' + remove +'变为:' + array );
    //插入,3个参数(起始位置,0(表示要删除的项数,不删除为0),要插入的项)
    array.splice(3,0,3,4);
    console.log(array);
    //替换,3个参数(起始位置,要删除的项数,要插入的任意数量的项)
    array.splice(3,2,8,8,8);
    console.log(array);

(6)迭代方法

    var numbers = [1,2,3,4,5,6,7,8,9];
    //every()查询数组中的项是否满足条件,都满足则返回true
    var everyResult = numbers.every(function (item,index,array) {
        return (item > 2);
    }) 
    console.log('every:' + everyResult);
    //some() 查询数组中的项是否满足条件,任意一个满足就返回true
    var someResult = numbers.some(function (item,index,array) {
        return (item > 2);
    })
    console.log('some:' + someResult);
    //filter(),返回所有满足条件的项组成的新数组
    var filterResult = numbers.filter(function (item,index,array) {
        return (item >2);
    })
    console.log('filter:' + filterResult);
    //map(),返回每一项运行函数后的结果的数组
    var mapResult = numbers.map(function (item,index,array) {
        return item * 0;
    })
    console.log('map:' + mapResult);

这里写图片描述

3、Function 类型

由于函数是对象,因此函数名实际上是一个指向函数对象的指针。

(1)函数定义

1)函数声明

function sum (n1,n2) {
    return n1 + n2;
} 

2)函数表达式

var sum = function (n1,n2) {
    return n1 + n2;
};//要注意这里有一个分号,就像声明其他变量一样

函数声明和函数表达式的区别:
解析器在向执行环境中加载数据时,解析器会率先读取函数声明(函数声明提升),并使其在执行任何代码之前可用(可以访问);而对于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。

3)使用Function构造函数

var sum = new Function("n1","n2","return n1+n2");//不推荐使用

(2)没有重载

由于函数名仅仅是指向函数的指针,因此函数名与包含对象指针的其他变量没有什么不同,所以一个函数可以有多个名字。

(3)函数内部属性

在函数内部,有两个特殊的对象:arguments、this

arguments:类数组对象,它的主要用途是保存函数参数,它还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数
this:this引用的是函数据以执行的环境对象

(4)函数属性和方法

属性:

每个函数都有两个属性:length,函数希望接收的命名参数的个数;prototype,保存所有实例方法的真正所在

方法:

apply()和call():两个方法的用途都是在特定的作用于中调用函数,实际上等于设置函数体内this对象的值
apply(),接收两个参数,一个是在其中运行函数的作用域,另一个是参数数组。
call(),第一个参数是this值,第二个参数是列举出传递给函数的所有参数。
这两个函数的真正强大的地方是能够扩充函数赖以运行的作用域;
bind(),该方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。

window.color = "red";
var o = {color:"blue"};

function sayColor(){
    alert(this.color);
}
sayColor();//red,全局作用域,this就是window对象
sayColor.call(this);//red
sayColor.call(o);//blue,this指向对象o

4、基本包装类型

Boolean、Number、String特殊的引用类型,实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象。
引用类型与基本包装类型的区别:
对象的生存期,使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中;而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁,因此,不能再运行时为基本类型值添加属性和方法。
对基本包装类型的实例调用typeof会返回object

(1)Number类型

toFixed():按照指定的小数位返回数值的字符串表示

var num = 10;
alert(num.toFixed(2));//"10.00"

toExponential():返回以指数表示法表示的数值的字符串形式

(2)String类型

length属性:表示字符串中包含多个字符;
charAt():返回给定位置的字符;
charCodeAt():返回给定位置的字符编码;
concat():将一个或者多个字符串拼接起来,返回拼接得到的心字符串,但实践中使用更多的还是“+”加号操作符;
slice()、substr()、substring():基于子字符串创建新字符串的方法,都会返回被操作字符串的一个子字符串,第一个参数指定子字符串的开始位置,第二个参数表示子字符串到哪里结束(不包含该字符)
indexOf()、lastIndexOf():查找子字符串,返回子字符串的位置,找不到返回-1
trim():创建一个字符串的副本,删除前置及后置的所有空格;
大小写转换方法:toLowerCase( ) toUpperCase( ) toLocalLowerCase( ) toLocalUpperCase( )

5 内置对象

URI编码方法

encodeURI( ) encodeURIComponent( ) 可以对URI(通用资源标识符)进行编码,以便发送给浏览器。区别,encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号,正斜杠,问号和井字号;encodeURIComponent()会对它发现的任何非标准字符进行编码。

Math对象

Math.ceil( ):向上舍入;
Math.floor( ):向下舍入;
Math.round( ):四舍五入
Math.random( ):返回0到1之间的随机数

//生成区间内的随机数
function selectFrom (lowerValue,upperValue) {
    var l = upperValue - lowerValue;
    return Math.floor(Math.random() * l + lowerValue);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值