构造函数模式与new

工厂模式

在JS高程中提到有工厂模式的这一设计模式,可批量化,用于解决创建多个相似对象的问题。其实质依然是用一种函数返回对象。例如,我们来造一堆小猫。

function createCat(name, color){
        var o = Object();
        o.name = name;
        o.color = color;
        return o; 
}
var cat1 = createCat("小白","white"); 
var cat2 = createCat("小黑", "black");

构造函数模式与new

为了让我们的猫更丰富一点,此时可以使用构造函数模式,并且使用new关键字进行优化。

function Cat(name,color){
  this.name = name
  this.color = color
}
Cat.prototype = {
  legs: 4,
  tails: 1,
  eyes: 2,
  say: function(){
    console.log('miao miao')
    }
}
var cat = new Cat('小灰','灰色')

此时,可以两两比较发现,new就是一种语法糖,new帮忙做了四件事
-帮你创建了临时对象,this指向Cat{}
-帮你绑定了原型
-帮你return
-并统一把原型用prototype

其中应该注意的是:
1.在构造函数中,不要乱加return,否则会手写的return出去;
2.当不使用new时,却return this时,cat === window //true


image

3.使用new时,this intanceof Cat //true
4.当什么也不操作时,new也会增加constructor属性

p.s. jQure也是一种构造函数,已经帮我们自动添加new了


image
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 2,548评论 2 18
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,403评论 19 139
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 8,083评论 2 17
  • 走近固原 我便走进了一段心酸过往 那年冬天的一个日子,固原市的北风 像接待一位老熟人一样拥抱了我 火车站附近一个冰...
    gezhe1967阅读 517评论 13 12
  • 人只要上微信,估计都有群,建群的目的无外乎以下几种。一种是想推广,运营,有更多的资源,做到资源共享,利用,达到更好...
    刘娇阅读 1,532评论 6 18

友情链接更多精彩内容