首页 > 代码库 > js面向对象-继承

js面向对象-继承

定义父类

// 原型模式与构造函数组合function Person(name,age,job) {	// 构造函数模式定义实例属性	this.name = name;	this.age = age;	this.job = job;}Person.prototype = {	//原型模式定义方法和共享属性	constructor: Person,  //重写原型改变了constructor,修正回来	sayName:function() {		alert(this.name);	},	sayJob:function() {		alert(this.job);	}}

  定义子类

// 定义Singer类,并指定job为singerfunction Singer(name,age,song) {	Person.call(this,name,age,‘singer‘);	this.song = song;}

  每次调用Singer构造函数都会把Singer的job设置为singer,并增加了一个属性song。

Singer继承Person

Singer.prototype = new Person();Singer.prototype.constructor = Singer;Singer.prototype.saySong = function() {	alert(this.song);}

  第一步把Singer的原型设置为Person的实例对象,第二步修正constructor指向,因为Singer的prototype等于Person,所以它的constructor指向的Person函数,第三步添加了一个Singer对象的方法。

创建Singer对象

var TaylorSwift = new Singer(‘Taylor Swift‘,22,‘Love Story‘);TaylorSwift.saySong();  //"Love Story"TaylorSwift.sayJob();  //"singer"

  

js面向对象-继承