對象_原型

問題1: OOP 指什么?有哪些特性

OOP指的是面向對象編程。就是將事物抽象成對象。
面向對象的三個基本特征是:封裝、繼承、多態。

  • 封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
  • 繼承,它可以使用現有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。
  • 多態,允許將子類類型的指針賦值給父類類型的指針。實現多態,有二種方式,覆蓋,重載。

問題2: 如何通過構造函數的方式創建一個擁有屬性和方法的對象?

function Car(brand){
    this.brand = brand;
    this.start = function(){
        console.log('gogogo');
    }
}

問題3: prototype 是什么?有什么特性

js本身不提供一個class的實現,js對象都有一個私有屬性(稱之為 [[Prototype]]),它持有一個連接到另一個稱為其 prototype 對象(原型對象)的鏈接。該 prototype 對象又具有一個自己的原型,層層向上直到一個對象的原型為 null。JavaScript 中幾乎所有的對象都是位于原型鏈頂端的Object的實例。

問題4:畫出如下代碼的原型圖

prototype

問題5: 創建一個 Car 對象,擁有屬性name、color、status;擁有方法run,stop,getStatus


function Car(name, color, status) {
  this.name = name;
  this.color = color;
  this.status = status;
}

Car.prototype.run = function() {
  console.log('run run run');
}

Car.prototype.stop = function() {
  console.log('stop');
}

Car.prototype.getStatus = function() {
  return this.status;
}

問題6: 創建一個 GoTop 對象,當 new 一個 GotTop 對象則會在頁面上創建一個回到頂部的元素,點擊頁面滾動到頂部。擁有以下屬性和方法

        function goTop($ct, $target){
          this.$ct = $ct;
          this.$target = $target;
          this.createNode();
          this.bindEvent();
        }

        goTop.prototype = {
          bindEvent: function(){
            this.$target.on('click', function(e){
              e.preventDefault();
              $('html,body').animate({
                scrollTop: 0
              }, 700);
            })
          },
          createNode: function(){
            this.$ct.append(this.$target);
          }
        }

        new goTop($('body'), $('<a href="#">top</a>'));
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容