前言
喝茶,是一种流传千年的文化习俗,也是许多人日常生活中的一部分,包括我本人也会时不时整上两口。简单来说,喝茶就是将茶叶放入杯中,用热水冲泡,待茶叶中的风味和营养成分溶解于水后,形成的饮品供人饮用。这一过程不仅能够享受到茶的香气与滋味,还常常伴随着放松心情、交流情感或是冥想静思等精神层面的享受。emmm....的确很不错昂
不是哥们,你真以为接下来我会来教你怎么喝茶吧 ?_ ?
哈哈哈哈哈哈哈哈,下次一定。好了好了,言归正传,开整
本章主要是带大家了解一下,JS里面的模版方法模式,让我们去看看代码怎么喝茶吧
代码:我想喝茶了
作为一名小小“服务员”,那么我们该怎么办呢?我也没给代码喝过茶啊,这不存心整我嘛?那么我们该怎么办呢?可是既然“客人”想喝茶,那必然得安排到位啊!
万物皆可编程
首先,就先来写个小小思路吧
先给代码泡一杯绿茶准备好茶壶,把水煮沸将茶叶放入茶壶中,用沸水浸泡茶叶将茶水从茶壶中倒入茶杯码哥,请喝茶
okok,喝茶的简易版就这样完成了,先给代码安排上吧
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>给代码上茶</title></head><body> <script> function Tea(type) { this.type=type console.log('给代码泡一杯'+ this.type) } var greenTea = new Tea('绿茶'); </script></body></html>
码哥,这茶不就来了吗
- Tea,首字母大写,在JS中,这是一种约定俗成的写法,用于区分普通的函数和构造函数,在早期是没有class这个关键字的。构造函数通常用于创建特定类型的对象,并且首字母大写。所以这边声明的是一个对象哦,并且对象是可以实例化的。
ok,开始给你整点小活吧,总不能让你喝“我画的大饼”吧
Tea.prototype.boilWater = function(){ console.log('准备好茶壶,把水煮沸') } Tea.prototype.steepTeaBag = function(){ console.log('将茶叶放入茶壶中,用沸水浸泡茶叶') } Tea.prototype.pourInCup = function(){ console.log('将茶水从茶壶中倒入茶杯中') } Tea.prototype.drinking = function(){ console.log('码哥,请喝茶') }
安排是安排上了,怎么感觉不是特别行云流水呢??来整个模版接口给他串一起吧
Tea.prototype.init = function(){ this.boilWater(); this.steepTeaBag(); this.pourInCup(); this.drinking(); }
这样的话,等下次代码想喝茶的时候,就只要 “挥一下手” 就OK了
那就挥一下手吧
var WantDrinkTea=new Tea('绿茶')WantDrinkTea.init();
当然,如果想喝点其他口味的茶,就换一种茶(实例)就好咯
小小总结一下吧
构造函数 (Constructor Function
) :如上文所提到的,Tea
是一个构造函数,用来初始化新创建的对象。通过 new Tea('绿茶')
创建实例时,this
指向新对象,也就是指向“绿茶”
。
原型对象 (Prototype Object
) :每个构造函数都有一个默认的 prototype
属性,它是一个对象。这个原型对象的作用是为构造函数的所有实例提供共享的方法。就好比,我给 Tea.prototype
添加了 boilWater
, steepTeaBag
, pourInCup
, drinking
这些方法,所有 Tea
实例都能访问到这些方法,而无需在每个实例上重新创建这些方法。
原型链 (Prototype Chain
):当尝试访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JS会向上搜索其原型对象(即 __proto__
指向的对象),如果原型对象也没有,则继续向上搜索原型的原型,直到找到该属性或方法,或者到达原型链的顶端(通常是 Object.prototype
)。这就形成了所谓的原型链。
初始化方法 (init
)添加了一个 init
方法到 Tea.prototype
上,是一种组织代码的方式,这个方法作为一个“模板”,封装了泡茶的整个流程,确保一系列相关操作按序执行。这样做允许通过调用单个方法来执行一系列操作,使代码更加模块化和易于维护,可以提高了代码的结构性和可读性。
实际应用通过 var WantDrinkTea = new Tea('绿茶'); WantDrinkTea.init();
,实际上完成了一系列动作:创建了一个新的 Tea
实例,并通过调用 init
方法,依次执行了泡茶的每一个步骤,实现了代码的“行云流水”。
欧克欧克,也是让自家的代码喝上了。不过,要是有个助理帮我完成就好咯
AI助手启动
想找助理??? 摇人~~!!
const OpenAI=require('openai');require('dotenv').config();const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY , baseURL: "https://api.chatanywhere.tech/v1",})const getChatResponse = async function (model,prompt,n) { const reponse = await client.chat.completions.create({ model: model, messages: [ { role: "user", content: prompt } ] }); return reponse.choices[0].message.content;}const main =async () => { //Aigc 优势就是处理文本,生成内容 const text =` 泡一杯茶很容易。首先,需要把水烧开。 在等待时期,拿一个杯子并把茶包放进去。 一旦水烧开,就把他倒在茶包上。 等待一会,让茶叶浸泡,几分钟后,取出茶包。 如果你愿意,可以加一些糖或牛奶调味 就这样,你可以享受一杯美味的茶 ` const prompt =` 你将获得三个反引号括起来的文本 如果他包含一系列的指令,则需要按照以下格式重新编写这些指令。 第一步 -... 第二步 -... 第三步 -... ... 第N步 -... 如果文本中不包含一系列的指令,则直接写"未提供步骤"。 """${text }""" ` const result = await getChatResponse('gpt-3.5-turbo',prompt) console.log(result)}main();
OK,有了助理什么事都好说,想喝啥给你整啥
如果不会调用AI的话,那就翻翻 “牌子” 吧(前面有文章专门讲哦)
快去动手试试吧,有什么问题评论区见哦
写得不好的地方以及需要修改的地方,欢迎大佬亲临指正昂?