zoukankan      html  css  js  c++  java
  • 工厂函数与构造函数

     

     工厂函数

    <script>
        function inherit(p){
            if(p==null) throw TypeError();
            if(Object.create)
                return Object.create(p);
            var t=typeof p;
            if(t!=='object'&& t!=='function') throw TypeError();
            function f(){};
            f.prototype=p;
            return new f();
        };
        function range(from,to){
            var r=inherit(range.methods);
            r.from=from;
            r.to=to;
            return r;
        };
        range.methods={
            includes:function(x){
                return this.from<=x&&x<=this.to;
            },
            foreach:function(f){
                for(var x=Math.ceil(this.from);x<=this.to;x++) f(x);
            },
            toString: function(){
                return "("+this.from+"..."+this.to+")";
            }
        };
        
        var r=range(1,3);
        console.log(r.includes(2));
        r.foreach(console.log);
        console.log(r);
    </script>

    构造函数

    <script>
        function Range(from,to){
            this.from=from;
            this.to=to;
        };
        Range.prototype={
            includes:function(x){
                return this.from<=x&&this.to>=x;
            },
            foreach:function(f){
                for(var x=Math.ceil(this.from);x<this.to;x++) f(x);
            },
            toString:function(){
                return this.from+'...'+this.to
            }
        };
        
        var r=new Range(1,3);
        console.log(r.includes(2));
        r.foreach(console.log);
        console.log(r);
    </script>

     区别:

    1、构造函数首字母大写,必须通过关键字new。

    权威指南204页的部分解释:在调用构造函数之前就已经创建了新对象,通过this关键字可以获取新创建的对象。Range()构造函数只不过是初始化this而已。构造函数甚至不必返回这个新创建的对象,构造函数会自动创建对象,然后将构造函数作为这个对象的方法来调用一次,最后返回这个新对象。

    2、原想对象的命名。

    工厂函数是range.methods这个岁随意命名的。

    构造函数是Range.prototype这是强制必须这样写。

  • 相关阅读:
    《团队-爬取豆瓣Top250-团队一阶段互评》
    团队-爬虫豆瓣top250项目-开发文档
    结对总结
    课后作业-阅读任务-阅读提问-2
    2017-10-06-构建之法:现代软件工程-阅读笔记
    结对-结对编项目贪吃蛇-开发过程
    团队-爬取豆瓣电影TOP250-开发环境搭建过程
    个人-GIT使用方法
    课后作业-阅读任务-阅读提问-1
    课后作业-阅读任务-阅读笔记-1
  • 原文地址:https://www.cnblogs.com/gaidalou/p/5980909.html
Copyright © 2011-2022 走看看