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" 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容