ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021/12/9

2021-12-09 20:01:43  阅读:147  来源: 互联网

标签:12 proto koa 2021 https constructor prototype 构造函数


眨眼间已经到了12月9号啦,昨天教资笔试出成绩,过啦嘿嘿,不过很快就要面试了,现在还是毫无准备
的状态,但我觉得应该开始准备起来了。

还是先学习前端的东西叭。

原来路由的权限设置跟工厂模式有关呢。
链接:https://blog.csdn.net/qq_41823886/article/details/90316357

感觉这个博主的博客很不错呢,(关于vue的),我想好好看,好好学一下:
https://zhuhuix.blog.csdn.net/category_9297006_2.html

还有这个滴:https://juejin.cn/column/6997271516492595214 这个博主也不错哈

在我看来,动态路由好像不是一个很难的点,就是一个冒号标记的路径参数。
举个案例,一个组件在不同id下都可以显示,这个时候就要用到路径参数。
然后在这个组件里,如果想要使用该id,就通过this.$route.params.id去获取就行了。
链接:
https://zhuhuix.blog.csdn.net/article/details/109094074?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.highlightwordscore
看官方文档也行,呃,好像真的没啥难度。
https://router.vuejs.org/zh/guide/essentials/dynamic-matching.html#%E5%93%8D%E5%BA%94%E8%B7%AF%E7%94%B1%E5%8F%82%E6%95%B0%E7%9A%84%E5%8F%98%E5%8C%96

是自己之前把动态路由想得太难了,实际上啥也不是= =

静态路由,就我的认知来讲,就是 还有 router.push({name:‘xx’ ,params:{})叭。
关于工厂模式:
https://zhuanlan.zhihu.com/p/146983610
感觉这个工厂模式讲得更清楚一点:https://www.yisu.com/zixun/152574.html

关于原型链,虽然看完了但是还是有一种一知半解的感觉:
https://www.jianshu.com/p/08c07a953fa0
不过知道是从构造函数这个例子开始讲起来的,有_proto_和prototype两个属性,
(要知道,每一个_proto_属性都指向上一层的prototype,就像因为实例有proto属性,
才可以访问到构造函数的prototype一样。这层指向我觉得应该是在new产生的叭)
从构造函数(构造函数.prototype)-Function.prototype-Object.prototype-null
还有一个就是任何实例都可以访问构造函数的constructor.通过new 实例.constructor可以创建一个新的
实例(因为constructor是指向构造函数.prototye的嘛)

下午:
Function Foo(){}
下午还是继续在看原型链,我发现再怎么理解都不如敲代码,代码一个个敲就慢慢理解了。
就比如说叭,prototype是方法才有的属性,对象没有。所以就利用这个,把构造函数共享的方法都写在
构造函数的prototype里,这样就能节省资源了。
(记住,prototype是方法才有的属性,实例对象的__proto__可以和构造函数的prototype相等哟)
链接:https://zhuanlan.zhihu.com/p/93263239
constructor指的是函数本身哈。
注意,Foo.prototype.constructor 是 Object.
当我们声明一个function关键字的方法时,会为这个方法添加一个prototype属性,指向
默认的原型对象。
顺带说一下,是 __ proto _而不是_proto,proto左右都有两个下划线而不是一个下划线。
fn.constructor == Foo.prototype.constructor
fn. __ proto __ == Foo.prototype.
关于proto属性:
每个对象都有proto属性,该属性指向构造函数的原型对象。(呃,好像也不是的)
像Object.create,一个对象的_proto_属性是由构造该对象的方法决定的。
最顶层:Object.prototype.__proto = =null(记住这个)
嗯,记住fn.__proto==Foo.prototype(记住这句话)很好用滴。
Foo是构造函数。只有Foo才有prototype.(记住这个)

嗯,如果对原型链不是很熟的情况下,就先掌握清楚实例对象和构造函数的关系就好了。
上面那个链接看总结,我觉得总结很有用呢。虽然一旦问我原型链是什么,我也很难说清楚。
只能说一下大概,__proto__还有prototype.
这样,https://www.jianshu.com/p/08c07a953fa0里面第一幅图就看得懂了。还是要多敲代码啊。
这个链接有个总结说__proto__总是指向prototype,但是要知道这两个的对象不一样哈。
(还有就是有一个ninja2 instanceof Ninja的,我觉得ninja2=new ninja.constructor叭,
他就是想表达ninja.constructor就是Ninja呗。)

最后。
我感觉其实原型链没有那么复杂叭,知道几个点就可以了,比如最重要的,prototype是构造函数才有的,
实例.proto==构造函数。prototype.Object.prototype.proto==null。
记住这三个点就够了。不难吧。

不想看原型链了,我记得我是奔着工厂模式来的= =。
不过看完原型链起码知道大概的流程是怎么样的,以及构造函数是怎么利用prototype创建共有方法滴。
然后工厂模式有个人写得很简单叭,我突然想到了刚刚看到的Object.create。
顺带上这个工厂模式的链接:(这个链接讲得就是工厂模式和构造函数的区别)
https://www.zhihu.com/question/393162646/answer/1206105166

好吧,创建对象,要么用构造函数,要么用工厂模式,构造函数呢,用的prototype,工厂模式呢,
用的Object.create()。(当然,constructor也可以)
但最后用的表达式差不多几乎一模一样。

感觉对难以理解的东西要多通过敲代码去实践一下比较好捏。

回去看项目了。

项目又是在讲koa啦,啊,koa~
app是new koa来的,app.use()注册一个中间件,里面是回调函数,可以接收http请求,所以这个参数
就是ctx哈,也就是context,上下文,嗯,自从我知道回调函数是拿参数后就觉得回调函数不难理解了。
然后我发现了一件事情,就是在这里这个参数ctx要对请求做响应,即ctx.body。
后端就是给请求做响应的,当时我还在想没有写这个请求怎么样,也不会怎么样啊,两者没有必然关系,
它处理响应,管这个请求什么时候发起呢,管有没有人发起这个请求呢,都与他无关,他要做的就是
未雨绸缪,当请求来的时候做相应就可以啦。
然后这个ctx是针对3000端口来的~

当然,后续真正做法还是要依靠第三方库啊,也就是koa-router。
(终于知道为啥是koa-router而不是router了,因为它用了koa的回调函数的参数ctx。
所以router长这样的:
router.get(’/user/123’,(ctx)=>{}),就是这样写滴,koa-router融入了koa的元素,所以有ctx。
是不是好记很多了~
总的来说,虽然说ctx是koa的,但是它并不直接靠koa而是借助第三方库koa-router。

知道require的原理,虽然昨天学了但是今天忘记了,当你能够require的时候,有两种情况,
这里取require(koa),会进入node_modules里的,然后就到koa的package.json里面找到main,发现
里卖弄的lib/application.js。
这个原理就是,require通过绝对的路径去引用,然后koa就通过自己的逻辑去引用,最后得到的就是我
们想要滴。

后端初始化一个项目,安装依赖主要有koa,还有mongoose。
这里开始讲mongoose啦。(其实以前都学过但是就是没有完全理解。。)
mongoose的schema会映射到mongod的。

标签:12,proto,koa,2021,https,constructor,prototype,构造函数
来源: https://blog.csdn.net/weixin_43754182/article/details/121842626

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有