前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过工厂函数、构造函数创建对象

通过工厂函数、构造函数创建对象

作者头像
很酷的站长
发布于 2022-12-21 07:04:46
发布于 2022-12-21 07:04:46
94900
代码可运行
举报
运行总次数:0
代码可运行

1. 工厂函数创建对象

当我们有多个变量的结构非常类似时,如下所示,反复书写结构过于麻烦,我们可以定义一个工厂函数来创建对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let object1 = {
name: "jia",
add(x, y) {
return x + y;
}
}
let object2 = {
name: "wang",
add(x, y, z) {
return x + y + z;
}
}
console.log(object1.add(1, 2))
console.log(object2.add(1, 2, 3))

使用工厂函数创建对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function factory(name = '') {
return {
name,
add(...args) {
return args.reduce((sum, item) => sum + item, 0)
}
}
}
console.log(factory('jia').add(1, 2))
console.log(factory('wang').add(1, 2, 3))
2. 使用构造函数创建对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function User(name) {
this.name = name
this.show = function () {
console.log(`my name is ${name}`)
}
// 函数被实例化时
// 如果没有定义 return 时,默认值为 this
// return this
// 当然,如果不想返回 this 可以自定义返回值
// return {}
}
const person = new User('liang')
person.show()

在 js 中,绝大多数的数据类型都是通过构造函数创建的

在浏览器控制台输出一个对象,可以看到这个对象是通过构造函数 Object 创建的

所以,我们可以这样来定义对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = new Object()
const obj = new Object({ name: "liang" })
const count = new Number(100)
const string = new String('liang')
const bool = new Boolean(true)
const date = new Date()
const regexp = new RegExp(/\d{3,}/)
const fun = new Function('cms', `console.log('this is function')`)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原 荐 一场版本升级引发的性能血案 - 之数
1. 案情回顾 老码农在 一场版本升级引发的性能血案的追凶过程 中谈到了 ActFramework 在 TFB 第 N 轮内部测试中全线溃败落入 Spring 朋友圈的不堪回首之往事. 历经三天两夜追凶过程, 老码农终于定位到了一 ActContextBase.<init> 中以 500K 字节初始化 S.Buffer 为首的犯罪集团, 并提交了新的 PR, 最新的内部测试结果已经收到果然让 Act ....................................................
老码农
2018/06/08
9050
原 一场版本升级引发的性能血案 - 王者归
上次老码农在一场版本升级引发的性能血案 - 之数据历险一文中讲得口吐白沫, 最后还是没有一个结果, 反而被 OSCer 们各种吐槽: "看得我快快精尽人亡了" "看着一头雾水" "一脸懵逼进来,一脸懵
老码农
2018/06/06
5970
原 荐 RESTFul 服务测试自动化的艺术
老码农在上一篇博客 给出了如何从头开始创建一个 自带自动化测试工具的 RESTful 服务项目的例子. 今天我们在这个简单例子上做延伸, 把这个例子改写为一个简单的 TODO Task 应用. 该应用
老码农
2018/06/08
5980
使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架
和传统后端页面生成技术相较, RESTful 数据服务专注与数据逻辑, 而将数据呈现完全交给前端应用. 这样做可以让后端开发更加单纯, 而且更容易测试. 本文将讲述如何使用 maven 生成一个支持端到端自动测试的 RESTful 服务的项目脚手架.
吴生
2018/05/15
1.1K0
一次SpringBoot版本升级,引发的血案
最近项目组升级了SpringBoot版本,由之前的2.0.4升级到最新版本2.7.5,却引出了一个大Bug。
阿珍
2022/12/22
6890
一次SpringBoot版本升级,引发的血案
聊聊netflix的EurekaHttpClient
eureka-client-1.8.8-sources.jar!/com/netflix/discovery/shared/transport/EurekaHttpClient.java
code4it
2018/09/17
1.1K0
聊聊Eureka Server的REST API
eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/ApplicationsResource.java
code4it
2018/09/17
1.7K0
Linux系统之安装Ward服务器监控工具
江湖有缘
2023/09/23
3960
Linux系统之安装Ward服务器监控工具
聊聊spring cloud的DefaultEurekaServerContext
本文主要研究一下spring cloud的DefaultEurekaServerContext
code4it
2018/09/17
6420
解决SVN安装语言包后无法选择中文的问题(亲测可行)
TortoiseSVN_1.8.8安装后无法选择简体中文,或者安装语言包后也无法选择中文
全栈程序员站长
2022/07/08
1.4K0
聊聊EurekaHealthCheckHandler
eureka-client-1.8.8-sources.jar!/com/netflix/appinfo/HealthCheckHandler.java
code4it
2018/09/17
1.3K0
聊聊eureka client的fetch-remote-regions-registry属性
本文主要研究一下eureka client的fetch-remote-regions-registry属性
code4it
2018/09/17
1.3K0
聊聊eureka的renewal
eureka client在实例化的时候注册了一个定时任务,每隔renewalIntervalInSecs,向eureka server发送一次renewal。具体详见聊聊eureka client的HeartbeatThread
code4it
2018/09/17
9490
hadoop出现ava.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException
到你的下载的hadoop所在版本的lib包中引入jackson-core-asl-1.8.8.jar   和   jackson-mapper-asl-1.8.8.jar  后错误消失
用户5166556
2019/04/16
1.1K0
聊聊springcloud的serviceRegistryEndpoint
本文主要研究一下springcloud的serviceRegistryEndpoint
code4it
2018/09/17
1.4K0
聊聊eureka的PeerAwareInstanceRegistryImpl
本文主要研究一下eureka的PeerAwareInstanceRegistryImpl
code4it
2018/09/17
1K0
azkaban配置依赖_azkaban安装
1.下载Azkaban 1.1登陆Azkaban的官网:https://azkaban.github.io/ 点击Downloads,如图示:
全栈程序员站长
2022/11/17
8970
azkaban配置依赖_azkaban安装
聊聊eureka client的serviceUrl
eureka-client-1.8.8-sources.jar!/com/netflix/discovery/DiscoveryClient.java
code4it
2018/09/17
1.4K0
BeautifulReport报告页面展示异常解决方法
那就只能从源头查起来,先看了看BeautifulReport的源码,就是常规的给模板文件赋值
沈宥
2022/05/10
8410
BeautifulReport报告页面展示异常解决方法
聊聊eureka server的response cache
eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/ApplicationResource.java
code4it
2018/09/17
9290
相关推荐
原 荐 一场版本升级引发的性能血案 - 之数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验