方法和屬性從乙個類傳遞到另乙個類的過程
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...