JavaScript物件導向程式設計學習筆記

2021-07-09 16:19:29 字數 2167 閱讀 4826

js和其他語言不同,沒有class的概念,要想形成物件導向,就必須依靠他自身乙個非常重要的概念,也是不好理解的乙個東西。那就是原型prototype,使用他可以模擬繼承和類的實現。下面先看乙個簡單的例子:

function

person

(name)

person.prototype =

}var zhang = new person("zhangsan");

console.log(zhang.getname());

執行結果:zhangsan

有兩種繼承方式,原型式繼承,建構函式式繼承

原型鏈繼承,看下面這個例子:

function

child

() function

parent

() child.prototype = new parent();//child繼承parent,通過原型,形成鏈條

var test = new child();

console.log(test.age);

console.log(test.name);

兩個函式用prototype形成鏈條,形成了繼承。

下面看看這個原型式繼承

function obj (o) ;

f.protype = o;

return

new f();

}var box = ;

var b1 = obj(box);

console.log(b1.name);

b1.name = 'mike';

console.log(b1.name);

console.log(b1.arr);

b1.arr.push('parents');

console.log(b1.arr);

var b2 = obj(box);

console.log(b2.name);

console.log(b2.arr);

//原型式繼承首先在obj()函式內部建立乙個臨時性的建構函式,然後將傳入的物件作為這個建構函式的原型,最後返回這個臨時型別的乙個新例項

//寄生組合式繼承

function

obj(o) ;

f.prototype = o;

return

new f();

}function

create

(parent,test)

function

parent

(name)

parent.prototype.run = function

() ;

function

child

(name,age)

inheritprototype(parent,child);//通過這裡實現繼承

var test = new child('trigkit4',21);

test.arr.push('nephew');

console.log(test.arr);

console.log(test.run());//只共享了方法

var test2 = new child('jack',22);

console.log(test2.arr);//引用問題解決

依靠原型式的繼承,中用new 操作符產生的物件,會向上查詢,查詢他原型鏈上的屬性,這樣就實現了繼承,如果刪除本物件上的屬性,是不會影響到父型別屬性的。

物件把函式當作方法的時候,this指向的就是那個物件。

1.全域性作用域

2.函式作用域

3.evel作用域

我在學習js繼承的時候,看了好多資料,但是發現根本記不住,我只有把其中的幾個理解下來,在圖後面更多的。現在我先縷一縷:要物件導向,那得先有物件,物件可以通過工廠模式還有建構函式模式等產生出來,也可以通過原型模式產生,有了物件之後就可以實現物件導向的重要特性,繼承,這裡我只掌握的原型模式的繼承,就比如我上面舉的例子,每個物件都有乙個prototype我把他指向另外乙個函式,這樣就實現了從這個函式到那個函式的繼承,因為每個物件都是object的例項,所有每個物件都有tostring和valueof這些方法。

說的如果有不對的,懇請大家指正、

javascript 學習筆記之物件導向程式設計

物件特殊屬性 資料屬性和訪問器屬性 1 資料屬性 configurable 是否可刪除 enumerable 是否可列舉for in writable 是否可寫 value 值 要修改預設屬性必須使用defineproperty object,key,descriptor 方法 例如 var per...

JavaScript物件導向

方法一 建構函式法 function cat cat.prototype.showname function var cat new cat cat.name tom cat.showname tom 它用建構函式模擬 類 在其內部用this關鍵字指代例項物件。類的屬性和方法,還可以定義在建構函式的...

javaScript物件導向

code 類lecture構造器 使用兩個字串函式,name和teacher function lecture name,teacher 類lecture的方法,生成乙個顯示該課程資訊的字串 lecture.prototype.display function 類schedule的構造器 使用乙個l...