js对象与数组

193 阅读4分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

对象

js有三大对象:本地对象、内置对象和宿主对象。(本地对象、内置对象为ECMAScript的内部的“内置”对象)

本地对象:原生对象或内部对象。

内置对象:js内置对象也被称为内部类。所谓的内部类,就是JavaScript里面封装好了的类。主要包括:Array,Boolean,Date,Math,Number,String,RegExp.....。

内置对象又可以分为静态类和动态类。

静态类:不需要new,直接调用这个类的属性或方法即可,例如:Math Math.pow()。

动态类:需要new,然后再调用对象的方法或者属性,例如:var arr =new Array(4,5,6);   arr.push()

对象属性或方法操作:

创建一个对象,里面包含了该对象的属性和方法:

let person = {
    name:"张三",
    age:"18",
    sing:function{
        console.log("I can sing");
    }
}

增加属性或方法

person.sex = "男"
person["sex"]= "男"
person.play = function(){
   console.log("I can play ");
}

删除属性或方法

delete person.sex
delete person["sex"]
delete person.play()

修改属性或方法

person.sex = "女"
person["sex"] = "女"
person.play = function(){
    console.log("I can playOne");
}

查看属性或方法

person.sex
person["sex"]
person.play()

如果通过关键词 "new" 来声明 JavaScript 变量,则该变量会被创建为对象:

var x = new String();        // 把 x 声明为 String 对象

数组

数组是一种特殊类型的对象,数组用于在单一变量中存储多个值。数组是一种特殊的变量,它能够一次存放一个以上的值。数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值。

数组特点:

1. 下标从0开始,长度用length查询。

2. 数组定义时无需指定数据类型。

3. 数组定义时可以无需指定数组长度。

4. 数组可以储存任何数据类型的数据。

5. 一般是相同类型的数据。

数组的创建方式:

1. 字面量定义(常用)

let arr = []

2. 构造函数创建

let arr = new Array ()
let arr = new Array (值1,值2,值3)

指定数组长度:

new Array(size)
let arr =  new Array(2);

定义了一个长度为2的数组:

arr[0] = "值1"

没定义的arr[1]则为undefined

数组的一些常用操作

push、pop、unshift、shift等操作。

arr.push()

arr.push("值1","值2")

向数组末尾添加一个或更多元素,返回值新数组的长度,原数组改变。 

arr.pop()

删除数组最后一项,没有参数,返回值删除项,原数组改变。

arr.pop()

arr.unshift()

向数组开头位置添加一个或更多元素,返回值是新数组的长度,原数组改变。

arr.unshift("值1","值2")

arr.shift()

删除数组第一项,没有参数,返回值删除项,原数组改变。 

arr.shift()

扩展操作

splice()、concat()、toString()等操作。

splice()原数组改变

splice(n,m)--从索引(下标)n开始,删除m个,返回值以数组的形式返回删除项。

splice(n)--从索引n开始删除到最后。

splice(0)--原数组清空,返回一个和原来一样的新数组。

splice(n,m,z);从索引(下标)n开始,删除m个,把z添加到删除的位置。 

slice(n,m)从索引n开始,查找到索引m处,不包含m,将查找到的以新数组返回,原数组不变。   

concat()原数组不改变

concat()数组的拼接,不改变数组,返回最终连接好的新数组。

使用concat方法时会将新数组的成员,添加到原数组的尾部,然后返回一个新数组,原数组是不会改变,即使是传入的其他类型的值,它们会作为新的元素,添加到数组末尾,同样不会改变原数组。

返回一个新的数组,如果有数组作为参数传入concat()方法里时,添加的是数组中的元素而不是数组本身。

数组转为字符串,不改变原数组

toString()  

join('符号')  (数组.join()可以直接转字符串)

清空数组

1. arr.splice(0);

2. arr.length = 0;

3. arr=[];

检验一个数是不是数组

Array.isArray(arr) 返回true或false

arr instanceof Array 返回true或false

Array.from(对象)可以将一个具有length长度的类数组(伪数组)转换成真正的数组。