JavaScript面向对象继承原理与实现方法分析(2)

function Person(name, age) { this.name = name; this.age = age; } Person.prototype.showName = function() { alert(this.name); }; function Student() { Person.call(this,"Alice",22); this.id = 16; } var student = new Student(); alert(student.showName()); // 报错:student.showName is not a function

实际中很少单独使用使用构造函数实现继承。

4、组合使用原型链和构造函数实现继承

思路:使用原型链继承共享的属性和方法,使用构造函数继承实例属性。

效果:既通过在原型上定义方法实现了函数复用,又能够保证每个实例都有自己的属性。

function Person(name, age) { this.name = name; this.age = age; this.friends = ["Cindy","David"]; } Person.prototype.sayHello = function() { alert("Hello, " + this.name); } function Student(name, age, id) { Person.call(this, name, age); this.id = id; } Student.prototype = new Person(); Student.prototype.showId = function() { alert(this.id); } var student1 = new Student("Alice", 22, 16); student1.friends.push("Emy"); alert(student1.friends); // "Cindy","David","Emy" student1.sayHello(); // Hello, Alice student1.showId(); // 16 var student2 = new Student("Bruce", 23, 17); alert(student2.friends); // "Cindy","David" student2.sayHello(); // Hello, Bruce student2.showId(); // 17

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1bf9d6246bcca99acfcfaf757e4318ea.html