ECMAScriptjs之面向目标

本文的面向对象分为ES6和ES6之前的,重点上ES6的

平、面向对象
1、什么是面向对象
  a)什么是目标:万物都可以抽象成靶子
    时间对象
    var oDate=new Date();(我们经常var的oDate就是一个日子对象)
    oDate.getFullYear();(新建的oDate就继续了Date里面的兼具方)
    数组
    var arr=new Array();
    arr.sort();
    arr.length;
    json{
      name:’aa’,
      showName:function(){
        alert(1);
      }
    }
    json.name;(json对象的特性)
    json.showName();(json对象的艺术)
  b)面向对象是同样栽沉思:
    我们只关心怎么去用,不关注里面是怎落实的
    提高了效率

2、怎么去面向对象
  a)先要产生一个靶
    对象还生特点,都生性能与法

    属性 属性就是变量,只不过他有专属关系
    特征 变量 自由的,独立的

    方法
就是函数,只不过他发专属关系

    函数 独立的

  b)造对象
    1、var arr=[];
    批量过去对象

  c)构造函数:用来之对象的函数,构造函数也是函数,只是因为用要得叫,为了与普通函数做区别,首字母大写就是构造函数

  d)this 想使学好面向对象
必须懂得this指于哪个

    new是为何的
    1、会当构造函数开始的职创建一个缺损对象(并且将this指向空对象);
    2、自动返回空对象

  e)属性不同的,方法是同样的
    是ES6之前面向对象的着力:原型

  f)面向对象怎么形容: 构造原型混合模式
    1、构造身上加属性
    2、原型身上加方法 prototype

      function Person(name,age){
        //添加属性和章程
        this.name=name;
        this.age=age;
      }
      Person.prototype.showName=function(){
        alert(‘我是舞蹈王’+this.name);
      };

      g)prototype 也是目标
        1、写面向对象是以扩大系统方法

      h)arr.indexOf()

        练习题:
          时间对象中 getDay 0-6 0星期
          getCnDay 星期一 — 星期日


二、总结:
  1.哟是目标:
    一切都是对象
  2.什么是面向对象:
    只关注怎么调用,不关心怎么落实的
  3.怎么形容一个类 就是一个构造函数
    属性加在构造身上
    方法加以在原型身上

    function Person(…){
      this.XX=XXX //加属性
    }
    Person.prototype.XXX=function(){}; //加方法
  4.怎么去之一个靶
    new 类名()
    eg var barry=new Person();(barry获得person的习性与办法)
  5.new 且关系了哟
    1)、造一个拖欠对象,并将this指向对象
    2)、返回这个目标
  6.prototype原型:
    1)、可以描绘面向对象
    2)、可以扩展系统的措施
  7.原型和原型链的分
    原型prototype 就是一个目标,存在吃每个对象身上
    原型链:就是因生prototype的在,js产生了原型链
  8.ECMAScript 里边的办法都是为此原型写的

    类 在js里面类就是构造函数
    实例
构造函数调用了返回的对象

  9.面向对象–一种考虑

  10.面向对象的特性:
    封装 抽象了事物之中坚
    多态 一个东西可以连续多个亲人的性状

    继承 事物得到了父亲之片特性

11.object
  instanceof 检测一个体的血缘关系
    子级 instanceof 父级 返回true false
  constructor 物体是由良构造器诞生的
    子级.constructor==父级 返回true false

  包装类(是java里面的)
  简写的数据类型object不信服。
12.this 发先级 从上到下,优先级变多少
  new object
  定时器 window
  事件 触发事件的靶子
  对象 对象
  show() window
13.连续 子级继承父级的效用
  给父级一个职能,子级默认就时有发生

  玩继承:
  属性
  在子级的结构中,调用父级的构造
  function 子级(name,age){
    //父级.call(this,name,age);
    父级.apply(this,arguments);
  }
  方法
  1、son.prototype=father.prototype;
    问题:子级改了父级也改成
  2、for(var name in father.prototype){
    son.prototype[name]=father.prototype[name];
  }
    问题:孩子不服气祖
  3、 子级.prototype=new 父级();
    问题:子级的儿女未认子级

  终极版:子级.prototype.constructor=子级;

三、ES6
  1.对象
    let name=’张三’;
    let json={
      name,
      showName(){
        alert(this.name)
      }
    }
  2.面向对象
  class Person{ //类
    constructor(name,age){ //构造 属性加于布局身上
      this.name=name;
      this.age=age;
    }

    showName(){
      alert(this.name);
    }

    showAge(){
      alert(this.age);
    }
  }
  3.继承
    class Student extends Person{
      constructor(name,age,job){
        super(name,age);//super在此间就是是发展越级继承父级的性能
        this.job=job;本身还要加的性
      }

      showJob(){
        alert(this.job);
      }
    }


ES6之前构造函数里子级继承父级的习性
  函数名.call(this的针对性,参数。。。。)针对多个参数的情状,不确定数量

  函数名.apply(this的指向,[参数,参数。。。。]);


目标引用

js为了节约空间,采取的同等种植行为;

var arr=[1,2,3];

var arr2=arr;

for-in 通过对象的习性进行巡回
之所以来循环对象的。但是能够为此for循环就绝不for-in

for var i=0;i<10;i++

json{

“a”:”1″,

“b”:”2″,

“c”:”3″

}

 for(var v in json){

  console.log(v);//打印出1,2,3

 }