标签:blog java io ar div cti log new javascript
// 原型模式与构造函数组合
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为singer
function Singer(name,age,song) {
Person.call(this,name,age,‘singer‘);
this.song = song;
}
每次调用Singer构造函数都会把Singer的job设置为singer,并增加了一个属性song。
Singer.prototype = new Person();
Singer.prototype.constructor = Singer;
Singer.prototype.saySong = function() {
alert(this.song);
}
第一步把Singer的原型设置为Person的实例对象,第二步修正constructor指向,因为Singer的prototype等于Person,所以它的constructor指向的Person函数,第三步添加了一个Singer对象的方法。
var TaylorSwift = new Singer(‘Taylor Swift‘,22,‘Love Story‘); TaylorSwift.saySong(); //"Love Story" TaylorSwift.sayJob(); //"singer"
标签:blog java io ar div cti log new javascript
原文地址:http://www.cnblogs.com/yoomin/p/3932995.html