博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中如何让类工厂和构造函数变成同一个函数
阅读量:7236 次
发布时间:2019-06-29

本文共 900 字,大约阅读时间需要 3 分钟。

我们知道在js中可以用一个函数来定义对象的类,该函数称之为对象的构造函数,我们在需要create对象的时候直接调用这个构造函数即可:

var Man = funciton(name){    this.name = name;    };var man = new Man("hopy");

如上所示man对象的类是Man,因为有:

Object.getPrototypeOf(man) === Man.prototype; //true

但是我们同样可以写一个类的工厂方法,用它来生成一个对象,显然该工厂方法不能用new来调用:

function Man_f(name){
var props = { name:{value:name,enumerable:true,writable:true,configurable:true} }; return Object.create(Man_f.prototype,props);}var man_f = Man_f("hopy");

以上2个方法分开来写略显繁琐,那么有没有可能把以上2个方法合成一个方法呢?那是必须的 :)

以下代码将Man和Man_f方法合并成一个Man方法,利用了这样一个事实:在使用new调用的构造器中this指向该类的一个实例:

function Man(name){
var props = { name:{value:name,enumerable:true,writable:true,configurable:true} }; if(this instanceof Man) Object.defineProperties(this,props); else return Object.create(Man.prototype,props);}//我们可以用任意一种方法来创建Man的实例var man0 = new Man("hopy");var man1 = Man("panda");

转载地址:http://upwbm.baihongyu.com/

你可能感兴趣的文章
工行网络金融部总经理钱斌:通过区块链技术管理贵州扶贫基金
查看>>
xcodebuild结合shell脚本实现iOS工程一键打包
查看>>
有关组件的尝鲜-SAOUnit弹窗
查看>>
Axios-指南
查看>>
[译] Python 与大数据:Airflow、 Jupyter Notebook 与 Hadoop 3、Spark、Presto
查看>>
vue怎么传event参数
查看>>
如何快速的学习微信小程序
查看>>
Node 调用 dubbo 服务的探索及实践
查看>>
前端(四)ES6篇
查看>>
mongodb 中非常好用的 Aggregate
查看>>
C# ip地址和数字相互转换源码
查看>>
Mysql优化规范建议
查看>>
SPos共识机制:从去中心化到多中心思维改变
查看>>
集群和分布式区别
查看>>
Android Studio ADB Wifi 无线调试
查看>>
oppo9.0系统怎么不用ROOT激活XPOSED框架的教程
查看>>
MySQL----极客时间
查看>>
React Native for Android 环境配置
查看>>
聊聊Elasticsearch RestClient的NodeSelector
查看>>
编码、摘要和加密(二)——信息摘要
查看>>