您的位置:首页 > 其它

组合使用构造函数模式和动态原型模式、寄生构造函数模式(创建具有额外方法的特殊数组)

2015-11-03 11:05 597 查看
摘要: 构造函数用于定义实例属性,原型模式用于定义方法和共享属性,寄生构造函数可在特殊情况下为对象创建构造函数

function Bird(name, age) {
this.name = name;
this.age = age;
this.sons = ["Tom", "John"];
//在sayName()方法不存在的情况下,添加到原型中
if (typeof this.sayName != "function") {
Bird.prototype.sayname = function() {
console.log(this.name);
};
}
}
/*
使用动态原型模式时,不能使用对象字面量重写原型,如果在已经创建了实例情况下重写原型,就会出现上一篇文章中提到过的错误。
*/

function SpeArray() {
var values = new Array();//创建数组
values.push.apply(values, arguments);//添加值
values.toPipedString = function() {
return this.join("|"):
};
return values;//返回数组
}
var colors = new SpeArray("red", "blue", "green");
console.log(colors.toPipedString());
//当然在此不能直接修改Array构造函数,且创建一个有特殊方法的数组
//根据此原理可以设计自己的“栈”、“队列”等特殊数据结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息