1、通過改變原型指向來實現繼承:
缺陷:實現繼承的同時直接初始化了屬性,繼承過來的屬性的都是一樣的
解決:繼承的時候不用改變原型的指向,直接使用借用建構函式(call方法)
function person(name,age,***,weight)
person.prototype.sayhi=function()
//借用建構函式:call(例項物件,屬性,屬性.....)
function student(name,age,***,weight,score)
var stu1=new student('小明',20,'女',87);
console.log(stu1.name+' || '+stu1.age+' || '+stu1.***+' || '+stu1.weight);
var stu2=new student('小成',21,'男',90);
console.log(stu2.name+' || '+stu2.age+' || '+stu2.***+' || '+stu2.weight);
var stu3=new student('小張',19,'男',98);
console.log(stu3.name+' || '+stu3.age+' || '+stu3.***+' || '+stu3.weight);
stu3.sayhi();
結果:
2、組合繼承:改變原型的指向(解決方法的繼承,例項化不用傳參)+借用建構函式(解決屬性的復用繼承)
function person(name,age,***,weight)
person.prototype.sayhi=function()
//借用建構函式:call(例項物件,屬性,屬性.....)
function student(name,age,***,weight,score)
//不用傳參
student.prototype=new person();
//自定義的方法
student.prototype.school=function()
var stu1=new student('小明',20,'女',87);
console.log(stu1.name+' || '+stu1.age+' || '+stu1.***+' || '+stu1.weight);
var stu2=new student('小成',21,'男',90);
console.log(stu2.name+' || '+stu2.age+' || '+stu2.***+' || '+stu2.weight);
var stu3=new student('小張',19,'男',98);
console.log(stu3.name+' || '+stu3.age+' || '+stu3.***+' || '+stu3.weight);
//繼承的方法
stu3.sayhi();
//自己的方法
stu3.school();
結果:
小明 || 20 || 女 || 87
小成 || 21 || 男 || 90
小張 || 19 || 男 || 98
你好啊啊啊
我是大學生
3、拷貝繼承:把乙個物件中的屬性或者方法直接複製到另乙個物件中
4、陣列中函式呼叫
var arr=[
function (),
function (),
function (),
function (),
function (),
function ()
];arr.foreach(function(ele));
JS原型與繼承(三) 原型鏈
先把基本 拿出來 function person name var p1 newperson 張三 很重要的幾個知識點 1.在物件中查詢乙個屬性時,會先從本身查詢,如果查詢不到會到prototype中查詢。即可以引申,所有物件中都有constructor 這個屬性是在prototype中的 2.原型...
js繼承(一)原型繼承
正式開工了 繼承在js中有著很大的地位,同時理解起來也比較抽象,我將分幾篇部落格來記錄js的繼承。原型繼承 相當於將父類物件與子類物件打通橋梁,可以靈活實現追加屬性與行為 子類擁有父類的一切行為和屬性。特點 非常純粹的繼承關係,例項是子類的例項,也是父類的例項 父類新增原型方法 原型屬性,子類都能訪...
js繼承,原型鏈繼承
1 乙個型別的物件能夠訪問另外乙個型別的屬性和方法 2 類與類之間的關係 類就是眾多例項共有的屬性和方法的乙個抽象 function animal name animal.prototype.say function function dog 把子類的原型指向父類的例項 dog.prototype ...