JS数组对象

155 阅读2分钟

1. 对象需要分类吗?创建对象new X()

理由1:

  • 有很多对象拥有一样的属性和行为,需要把他们分为同一类
  • 创建类似对象的时候就很方便

理由2:

  • 还有很多对象拥有其他的属性和行为,就需要不同的分类

new X()

let obj = new Object({'name': 'frank'}) //正规写法

new X()自动做了四件事情:

  • 自动创建空对象
  • 自动为空对象关联原型,原型地址指定为X.prototype
  • 自动为空对象作为this关键字运行构造函数
  • 自动return this

构造函数 X

  • X 函数本身负责给对象本身添加属性
  • X.prototype对象负责保存对象的共用属性

原型公式 对象x.proto ===构造函数X.prototype

举例:

function Dog(name){
    this.name = name
    this.color = '白'
    this.kind = '萨摩耶'
}
Dog.prototype.wangwang = function(){console.log('旺旺')}
Dog.prototype.run = function(){console.log('狗在跑')}
let dog1 = new Dog('小白')

dog1
Dog {name: '小白', color: '白', kind: '萨摩耶'}
 color: "白"
 kind: "萨摩耶"
 name: "小白"
[[Prototype]]: Object
  run: ƒ ()
  wangwang: ƒ ()
  constructor: ƒ Dog(name)
  [[Prototype]]: Object

2. 数组对象

let arr3 = new Array(1,2,3)  //传三个参数
arr3                         //元素为1,2,3

let arr1 =new Array(3)  //传一个参数
arr1                     //结果为长度为3的空数组

let arr2 =new Array(3,5)  //传两个参数
arr2                      //结果为长度为2的数组,arr2[0]为3,arr2[1]为5

2.1 数组对象的自身属性:

基于数组也是特殊的对象,所以arr3这个数组对象的属性名为字符串'0','1','2' ,对应的属性值为数字1,2,3

2.2 数组对象的共用属性: push/pop/shift/join/concat

arr.push(4)        //添加4到数组中
arr                //[1,2,3,4]
arr.pop()         //从数组中末尾依次弹出(删除)
arr                //[1,2,3]
arr.shift()        //从数组中删除第一个元素
arr.unshift()      //将1个或多个元素添加到数组的开头,返回数组的新长度
arr.join()         //连起来
arr = [1,2,3,4]
arr.join('方')    //结果为"1方2方3方4"

arr3 = [3,3,3]
arr4 = [4,4,4,4]
arry3.concat(arr4)   //结果为[3,3,3,4,4,4,4]