Javascript 物件導向程式設計 三

2021-09-11 12:51:21 字數 2001 閱讀 8147

方法和屬性從乙個類傳遞到另乙個類的過程

funtion person(firstname, lastname) 

person.prototype.sayhi = function()

function

student(firstname, lastname)

student.prototype.sayhi = function()

複製**

我們真的需要在學生身上重新定義sayhi嗎?這似乎重複…… 那怎麼辦?

function

person(firstname, lastname)

person.prototype.sayhi = function()

複製**

將乙個物件的原型屬性指定為另乙個物件的原型屬性!

function

student(firstname, lastname)

student.prototype = person.prototype;

var s1 = new student('李','哈')

s1.sayhi() // "hi 李 哈"

複製**

有用:)!

繼續看看在student prototype物件上新增一些別的

student.prototype.status = function()

複製**

讓我們用person建立乙個物件

var p1 = new person('下','啦')

p1.status() // 'i am currently a student'

複製**

哦哦……為什麼person原型有student原型的屬性?學生繼承的是人,而不是人。

問題

乙個更好的選擇object.create

建立乙個全新的函式並接受它的第乙個引數,即新建立物件的原型物件。

function

student(firstname, lastname)

student.prototype = object.create(person.prototype);

student.prototype.status = function()

var p1 = new person('李', '哈');

p1.status; // undefined

複製**

student.prototype 不會影響 person.prototype !

思考為什麼不是new?

function

student(firstname, lastname)

student.prototype = new person();

// 1. person被執行了兩次

// 2. **重複,增加了多餘的不需要的屬性在student的原型物件上面

複製**

優化一下

function

student(firstname, lastname)

student.prototype.sayhi = function()

student.prototype = object.create(person.prototype);

student.prototype.constructor; // person

student.prototype.constructor = student;

複製**

繼承的兩個要點

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...