js中組合方式實現繼承例項
阿新 • • 發佈:2018-12-09
要點:
1.js非高階語言,而是一本輕量級的指令碼語言,本身沒有繼承的特性。但是,開發實踐中,利用繼承可以節省大量重複的物件的屬性和方法的定義,所以基於原型,達到曲線繼承。
2. 若直接修改原型的指向,如果建構函式需要接收值他們的引數是一致的,那麼初始化得到的物件屬性值都相同,想要修改只能通過例項物件的原型來修改,比較麻煩。
若使用借用建構函式的方式來完成初始化,那麼初始化的例項物件無法使用被繼承物件的方法(通過.call(當前物件,引數1,引數2,引數3等))。
結合以上,得到第一種組合方式來達到繼承效果。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> function Person(name,qq){ this.name = name; this.qq = qq; } Person.prototype.show = function(){ console.log("陳小帥是真的帥"); } function Student(name,qq,num){ Person.call(this,name,qq); this.num = num; // 借用建構函式,通過.call(當前物件,引數1,引數2,引數3等); } Student.prototype = new Person(); Student.prototype.say = function(){ console.log("沒錯我就是陳小帥") } var stu = new Student("陳帥帥",2323010676,160720131); console.log(stu.name,stu.qq,stu.num); stu.show(); stu.say(); </script> </body> </html>