日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js之面向对象

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js之面向对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文的面向對象分為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

 }

?

轉載于:https://www.cnblogs.com/barry1102/p/6955074.html

總結

以上是生活随笔為你收集整理的js之面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。