原型對象心得

原型

prototype就是“原型”的意思。每個函數都有原型,原型是一個對象。

找原型對象有2個辦法:

  1. 構造函數名.prototype
  2. 對象名.proto

原型的應用

在 Array中 新增1個方法 boomXXX, 可以往里面壓入1個元素
Array.prototype.boomXXX = function(a) {
    // this 就是調用此函數的 那個數組對象
    this.push(a)
}

var arr = [1, 2, 3];

arr.boomXXX(4);

// 1,2,3,4  +
console.log(arr);
在 Array 中 新增1個方法 dz, 作用:調轉 第1個元素 與 最后1個元素
例如:   a = [1,2,3,4];
             a.dz();
            console.log(a);   // 4,2,3,1
Array.prototype.dz = function() {

    // 取出第1個元素, 因為this相當于是調用的對象
    var a = this[0];
    var b = this[this.length-1];

    // 倒轉
    this[0] = b;
    this[this.length-1] = a;
}

var a = [1,2,3,4]

a.dz()

console.log(a);

繼承

繼承父類的東西,并且可以增加自己的東西
屬性 父類.call(this, 參數列表)
方法 子類.prototype = new 父類();

// 動物類
function Animal()
{
    this.name = "動物";
    this.color = "黃色"
}

Animal.prototype.run = function() {
    console.log("跑跑跑")
}

// 因為狗和動物有大部分代碼是重復的
function Dog()
{
    this.nose = "大鼻子";
}
// 設置狗的原型對象為 動物,相當于 狗 繼承了 動物的所有屬性和方法
//   通過這條語句,可以實現讓 狗 繼承了 動物中的 所有屬性和方法
Dog.prototype = new Animal();

var dog1 = new Dog();
dog1.run();

對象冒充

function Cat(n) {
    this.name = n;
}

var obj = {};

// obj 替代里面的this, 稱為 對象冒充
Cat.call(obj, "貓貓");

// 貓貓
console.log(obj.name);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • class的基本用法 概述 JavaScript語言的傳統方法是通過構造函數,定義并生成新對象。下面是一個例子: ...
    呼呼哥閱讀 4,129評論 3 11
  • 面向對象 * 單利模式 * 工廠模式 * 構造函數模式 * 原型模式 * call,apply,bind * 繼承...
    web前端ling閱讀 248評論 0 1
  • 0 寫在前面的話 大多數的面向對象編程語言中,比如C++和Java,在使用他們完成任務之前,必須創建類(class...
    自度君閱讀 1,021評論 0 3
  • 官方中文版原文鏈接 感謝社區中各位的大力支持,譯者再次奉上一點點福利:阿里云產品券,享受所有官網優惠,并抽取幸運大...
    HetfieldJoe閱讀 3,024評論 4 14
  • 2017年秋季,是帶這一屆學生的第二個年頭,隨著了解的深入,師生之間已經達成共識:學習靠自己,沒有人可以替...
    枧文閱讀 189評論 0 0