Day06 JavaScript面向对象

面向对象OOP

  • JavaScript中的object
    1、直接使用变量定义object对象
    var car = {
      "wheels": 4,
      "engines": 1,     //注意这里使用逗号
      "seats": 4        //此处没有逗号
  };       //注意此处的分号,用于结束变量定义语句

2、使用构造函数来创建对象
构造函数通常采用大写字母开头,区别于普通函数。

    var Car = function() {
     this.wheels = 4;
     this.engines = 1;    
     this.seats = 4;         //注意这里都使用分号
  };        //这里也有分号

this指向被次构造函数创建出来的对象,this.wheels = 4;,它创建出来的对象带有wheels属性,并且赋值为4。
3、使用构造函数创建实例对象
使用关键字new去调用构造函数,JavaScript根据构造函数创建一个新的实例对象(instance),并且将构造函数中的this指针指向这个新的对象。

  var myCar = new Car();

myCarCar的一个实例,它被构造函数描述成:

    {
      "wheels": 4,
      "engines": 1,
      "seats": 4
    };

myCar可以像普通对象一样被使用,包括创建、访问、修改它的属性。

  myCar.turboType = "twin";   //myCar增加一个"turboType"属性,其值为"twin"
  myCar.engines = 2;        //myCar的engines属性值被修改为2,除了点号访问,也可以使用["seats"]来访问。

4、向构造函数中增加参数,创建不同的实例对象

    var Car = function(wheels, engines, seats) {
     this.wheels = wheels;
     this.engines = engines;    
     this.seats = seats;         
  };
    var myCar = new Car(6, 2, 4);        //创建一个wheels为6,engines为2,seats为4的对象

  • 对象的属性和方法
    对象用于自己的特征,称为属性;对象拥有自己的函数,称为方法。
    构造函数中的this指针指向当前创建的对象中的public公有属性,同时可以创建private私有属性和方法。私有的属性和方法在对象外部是不可访问的

    在构造函数中使用var创建变量,代替this创建属性,var声明的是局部变量。

 var Car = function() {
  // this is a private variable
  var speed = 10;

  // these are public methods
  this.accelerate = function(change) {
    speed += change;
    };

  this.decelerate = function() {
    speed -= 5;
    };

  this.getSpeed = function() {
    return speed;
    };
};

可以记录car的speed,外部只能对speed进行加减(而非变成字符串、直接赋值为其他某个速度值),提供规定的街口操作speed

map()方法

  • map()方法可以方便地迭代数组中每一个元素,并且根据回调函数来处理每一个元素,最后返回一个新的数组,map()方法不会改变原始数组
    var timesFour = oldArray.map(function(val) {  
      return val * 4;     //function(val)函数处理数组中的每一个元素,最后返回一个新的数组
     });

注:回调函数支持多个参数。

reduce()方法

  • reduce()方法用于迭代数组元素,并将所有元素的值累积到一个值中。使用reduce()方法时,需要传入一个回调函数,其参数是一个累加器(类似例子中的previousVal和当前值currentVal)。
  • reduce()方法有一个可选的第二个参数,可以设置累加器的初始值。如果没有定义初始值,那么数组的第一项将变为初始值,currentVal将从数组的第二项开始。
var array = [4,5,6,7,8];
var singleVal = 0;
singleVal = array.reduce(function(previousVal, currentVal) {
    return previousVal + currentVal;
  });      

filter()方法

  • filter()方法用来迭代一个数组,并按照条件过滤掉不符合要求的元素。
  • filter()方法传入一个回调函数,回调函数携带一个参数,参数为当前项(Val),回调函数返回true的项会被保留在数组中;返回false的项会被过滤出数组。
array = array.filter(function(val) { 
   return val !== 5;
  });   //移处数组array中等于5的项。

sort()方法

  • 使用sort()方法可以方便地按字母或数字顺序对数组中的元素进行排序,sort()方法会改变原数组,返回重新排序的数组
  • sort()方法可以把比较函数作为参数传入。比较函数有返回值,当 a 小于 b,返回一个负数;当 a大于 b ,返回一个正数;相等时返回0。
  • 如果没有传入比较函数,它将把值全部转成字符串,并按照字母顺序进行排序。
//从小到大
var array = [1, 12, 21, 2];
array.sort(function(a, b) {  
    return a - b;
  });
//从大到小
var array = [1, 12, 21, 2];
array.sort(function(a, b) {
    return b - a;
});

reverse()方法

reverse()方法可以翻转数组。

var myArray = [1, 2, 3];
myArray.reverse();          //myArray变为[3, 2, 1],会改变原数组

concat(val)方法

concat(val)方法可以将两个数组的内容合并到一个数组,参数val是一个数组,将其拼接到原数组的后面,作为一个新数组返回。

newArray = oldArray.concat(otherArray);  //将数组otherArray添加到数组oldArray之后,并将返回的新数组赋值给newArray。

split()方法

使用split()方法按照指定分隔符将字符串分割为数组。split(val)需要一个参数valval参数将会作为一个分隔符。

var array = string.split('s');   //以及s将字符串string分割为数组。

join()方法

使用join()方法将数组转换成字符串,数组的每个元素根据join()的参数连接起来。
使用and连接:

var veggies = ["Celery", "Radish", "Carrot", "Potato"];
var salad = veggies.join(" and ");
console.log(salad); // "Celery and Radish and Carrot and Potato" 

你可能感兴趣的:(Day06 JavaScript面向对象)