美文网首页
Day06 JavaScript面向对象

Day06 JavaScript面向对象

作者: 有个水友 | 来源:发表于2016-10-11 21:54 被阅读12次

面向对象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面向对象

    面向对象OOP JavaScript中的object类1、直接使用变量定义object对象 2、使用构造函数来创建...

  • JavaScript学习

    javascript面向对象 初学javascript,感觉javascript的面向对象编程还是很有意思的,在此...

  • javascript的面向对象

    javascript面向对象 初学javascript,感觉javascript的面向对象编程还是很有意思的,在此...

  • ajax

    1. 面向对象 javascript 具有面向过程,面向对象,函数式编程的特点 javascript 重要 原型/...

  • 构造函数与 new 命令

    JavaScript 语言具有很强的面向对象编程能力,本章介绍 JavaScript 如何进行面向对象编程。 对象...

  • JavaScript面向对象学习笔记

    @(JS技巧)[面向对象] JavaScript面向对象学习笔记 封装 Javascript是一种基于对象(obj...

  • js高级

    学习目标: 理解面向对象开发思想 掌握 JavaScript 面向对象开发相关模式 掌握在 JavaScript ...

  • JavaScript 高级(备忘)

    在线地址:JavaScript 高级 目标 理解面向对象开发思想 掌握 JavaScript 面向对象开发相关模式...

  • 06-JavaScript高级

    学习目标: 理解面向对象开发思想 掌握 JavaScript 面向对象开发相关模式 掌握在 JavaScript ...

  • 前端进阶(二)JS高级讲解面向对象,原型,继承,闭包,正则表达式

    JavaScript 高级 学习目标: 理解面向对象开发思想 掌握 JavaScript 面向对象开发相关模式 掌...

网友评论

      本文标题:Day06 JavaScript面向对象

      本文链接:https://www.haomeiwen.com/subject/wkrmyttx.html