一,对象的三种创建方式
- 利用字面量创建对象
- 利用new Object创建对象
- 利用构造函数创建对象
1.利用字面量创建对象
语法如下
var 对象名={
属性名:属性值,
属性名:属性值,
方法名:function(){}
}
var Person = {
name:'小香猪',
age:18,
code:function(){console.log('小香猪会写代码')}
}
2.利用new Object创建对象
语法:
var obj = new Object();
obj.name=‘编程小石头’
obj.age=18
我们这里就是先用 new Object()创建一个空对象,然后通过.属性名给这个空对象添加属性和方法
3.利用构造函数创建对象
构造函数是一种特殊的函数,主要用来初始化对象,它总是和new运算符一起使用,我们可以把对象里的一些公共属性和方法抽取出来,然后封装到这个函数里,方便批量创建对象。
使用构造函数创建对象时要注意下面几点
- 1.构造函数名字的首字母习惯大写
- 2.构造函数里不需要return就可以返回结果
- 3.调用构造函数创建对象时,必须用new
- 4.我们的属性和方法前面必须添加this
function Person(name, age) {//创建构造函数Person
this.name = name;
this.age = age;
this.action = function (jineng) {
console.log(name + "具备" + jineng + '的技能')
}
}
//创建对象1
var obj1 = new Person('小香猪', 18)
console.log(obj1.name)//编程小石头
obj1.action('写代码')//编程小石头具备写代码的技能
//创建对象2
var obj2 = new Person('周杰伦', 41)
console.log(obj2.name)//周杰伦
二,内置对象
内置对象就是指Javascript自带的一些对象,供开发者使用,这些对象提供了一些常用的的功能。开发者可以很方便的使用这些内置对象,而不用关心这些内置对象的实现原理。
就好比我们使用手机内置的发短信,打电话功能,我们用的时候可以很方便的快速使用,而不用关心打电话的实现原理。这就是我们使用内置对象的原因,主要就是为了快速方便的使用内置对象的
常见的内置对象有Math、Array、Date等
1.三大常用内置对象查询文档
- MDN
官方地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript - W3cschool
https://www.w3school.com.cn/js/index.asp - 菜鸟教程
https://www.runoob.com/js/js-tutorial.html
这里建议大家使用MDN文档。因为这个文档比较全,可以快速检索
2.Array内置对象
- 这里着重介绍Array内置对象,其他内置对象如Math,Date使用频率较小,在日后使用时,及时查询上述给出三个文档即可,这里仅提供常用的Array内置对象方法。
2.1 Array中判断数据是否为数组对象的两种方法
- 1,通过instanceof Array
- 2,通过Array.isArray()方法
var arr = new Array()
console.log(arr instanceof Array) //true
console.log(Array.isArray(arr))//true
2.2 通过内置对象方法,添加和删除数组元素
- push方法添加
在数组的末尾添加一个或者多个元素 - unshift方法添加
在数组的开头添加一个或者多个元素 - pop方法删除
删除数组尾部的元素,一次只能删除一个 - shift方法删除
删除数组最前面(头部)的元素
//使用演示
let list = []
list.push(1)//数组尾部添加
list.pop()//数组尾部删除
list.unshift(1)//数组头部添加
list.shift()//数组头部删除
2.3 通过内置对象方法,翻转数组数据及给数组数据排序
- reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
var arr = [1, 2, 3, 4, 5]
console.log(arr.reverse())//[5, 4, 3, 2, 1]
- 用sort方法进行排序,默认是升序排列的,如下
var arr = [1, 3, 2, 5, 4]
console.log(arr.sort())//[1, 2, 3, 4, 5]
但是直接用sort方法会有问题
var arr = [11, 3, 22, 55, 44]
console.log(arr.sort())//[11, 22, 3, 44, 55]
为什么会出现3在11和22后面的问题呢,因为我们sort默认排序顺序是在将元素转换为字符串,然后对字符串进行比较,再排序的,所以我们要想用sort来排序,就要用到另外一个写法了
var arr = [11, 3, 22, 55, 44]
//按照升序排序
arr.sort(function (a, b) {
return a - b
})
//按照降序排序
arr.sort(function (a, b) {
return b - a
})
2.4 通过内置对象方法,进行数组的索引
- indexOf()方法
返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。 - lastIndexOf() 方法
返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1
list.indexOf(1)//检索到的第一个匹配数据索引下标
list.lastindexOf(1)//检索到的最后一个匹配数据索引下标
2.5 通过内置对象方法,数组转为字符串、加符号拼接字符串
- toString()
将数组数据转化为字符串,以逗号拼接 - join(…)
使用设定好的拼接符,将数组元素串成一个字符串
list = [1,2,3]
list.toString() ===> "1,2,3"
list.join("-") ====> "1-2-3"
2.6 数组的其他常用方法
- concat() 方法
用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组 - slice() 方法
截取数组的一部分返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变 - splice() 方法
通过删除或替换现有元素或者原地添加新的元素来修改或者删除数组
splice(从第几个开始,删除几个)
var arr = [1, 2, 3, 4, 5]
arr.splice(0, 2)// 从索引为0的地方开始,删除2个元素。
console.log(arr) //[3, 4, 5]
- splice(从第几个开始,替换几个,要替换的值)
var arr = ['a', 'b', 'c', 'd', 'e']
arr.splice(0, 2,'A','B')// 从索引为0的地方开始,替换2个元素,替换为 A和B
console.log(arr) //["A", "B", "c", "d", "e"]