首页 > 其他 > 详细

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

时间:2014-08-28 13:28:29      阅读:253      评论:0      收藏:0      [点我收藏+]
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构造函数,且创建一个有特殊方法的数组
//根据此原理可以设计自己的“栈”、“队列”等特殊数据结构。


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

原文:http://my.oschina.net/quidditch/blog/307487

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!