JavaScript高级
文章平均质量分 83
学而不思则罔 思而不学则殆
闭包、作用域及作用域链、原型及原型链
Kong_十六
慢慢来,才是快。
展开
-
JS 进阶笔记总结
js 核心原理原创 2023-02-06 17:51:56 · 494 阅读 · 0 评论 -
JavaScript 中继承合集
圣杯模式我的这篇文章——圣杯模式详细的写了整个过程,再次学习Object对象时,发现一个问题,就是子类继承了父类之后,实例化出来的对象的原型中constructor属性是可遍历的,假如我们使用 for of语句遍历对象,则会把 constructor 属性遍历出来,这样就不好了,这里更改一下 constructor 属性的设置。采取Object.defineProperty() 方法定义属性。Object.defineProperty(obj,atrr,cfigObj)obj :参数是设置属性的对原创 2020-07-01 15:46:10 · 196 阅读 · 2 评论 -
ES5和ES6中数组常用方法总结
数组无疑是js中核心数据类型之一,在DOM操作中,获取的元素一般都是一个类数组的集合,其中数组迭代方法使用的比较多。这里总结数组中比较常用的方法,方便查阅。操作方法concat() :添加数组成员,返回添加后的新数组,不改变原数组; let myArr = ['grade', 'name', 'age', 18, {}] console.log(myArr.concat(23)); //["grade", "name", "age", 18, {…}, 23]原创 2020-06-30 19:03:52 · 624 阅读 · 0 评论 -
Map类型实现 —— 选课小案例
最近呢,知识的输入量比较大,但是呢,依旧是在巩固基础的路上。哈哈哈哈哈哈。大概简单的过了一遍ES5和ES6中新增的数据类型、数组、字符串常用的方法。emmmmm,确实是比较好用。但是,逻辑地实现和代码实现之间是有差距的,今天这个案例,我吧,调试解决问题用了半天,唉,看来还是菜鸟啊,继续加油吧。案例介绍+按钮的点击是可以来回切换状态的,在 + — 之间切换。+ 表示添加课程,—表示取消课程。点击+号,表示选择课程,选中后,选中的课程数和课程会动态渲染在右侧的空白区域。点击过后再次点击时取消选课,渲染数据原创 2020-06-26 10:40:14 · 313 阅读 · 1 评论 -
JavaScript 中特别的类型 —— RegExp类型 正则表达式
第一次接触正则表达是在上学期编译原理的课上,这个课里有讲正则表达的。当时就是随便听听,也了解一些,这几天学习了JavaScript中的正则表达,大概的内容都是一样的,具体有什么不同,暂时不知道哎,因为课上学的都忘记的差不多了(尴尬),目前记得的都是重新输入的知识,咯咯咯咯咯。正则表达在很多语言中都有,它是一个独立的存在。正则表达这个名字听起来很高级的样子,其他它简单来说就是匹配字符串,按照自定义的匹配模式去匹配符合匹配模式的字符。那什么叫匹配模式呢,就是检测字符的标准,比如检测字符串中是否含有abc字符串原创 2020-05-28 16:44:47 · 335 阅读 · 0 评论 -
JavaScript —— 理解深拷贝,封装深拷贝方法
深拷贝:一个变量复制另一个变量的内容,但两个变量之间相互不影响。用通俗的话说就是两个变量只是长的一样,但是不是同一个人。有深拷贝当然也就会有浅拷贝,浅拷贝比较简单,一个变量复制另一个变量的内容,这个变量是另一个变量的副本。其实俩变量都是同一个人,只是名字不同,有两个名字。深拷贝的主要应用在引用值的数据类型,像数组、对象的等。这里还牵扯到一个知识点,就是如何区分变量是数组对象还是对象。换句话需要判断变量是[ ]还是{ }。因为在JavaScript中的Array和Object都是对象。区分Array和O原创 2020-05-24 17:14:51 · 620 阅读 · 0 评论 -
JavaScript 之 继承 ,封装一个最佳的继承函数 —— 圣杯模式
今天的内容,与之前原型和原型链的知识有联系,可以看我的上一篇文章原型、原先链。文章里有详细的介绍。因为继承的学习是建立在这些知识的基础之上的。首先来说下为什么要用继承吧。当我们自定义构造函数并且实例化对象时,总会重复的书写相同的属性或者方法,这就让我们的代码高耦合了,简单来说就是简化程序优化代码。当对象用到相同的属性和方法时,只要继承过来就行了,若需要自己特有的属性方法再追加即可。这是我个人对为什么用继承的理解。也许是比较片面的,欢迎大家指正。原型链实现继承利用原型链来实现继承是传统方式的继承,主要原创 2020-05-21 11:16:40 · 302 阅读 · 0 评论 -
JavaScript中的原型、原型链、构造函数以及实例对象
其实原型我看了有一段时间了,也没有看很长时间,就是找一个下午的时间听听课,然后就感觉很懵,似懂非懂的,接着就自己想想,然后就还是懵。平时翻翻技术类的公众号或者CSDN上的文章也会涉及到原型的内容,加上前天我又看一一遍讲解,看的多了慢慢的就更熟悉更了解了。今天,下定决心要总结总结写写原型了。内容多少会有点问题,谅解谅解,毕竟是菜鸟的小白为了记录自己的学习过程。构造函数和实例对象构造函数也是一个函数,它与普通函数的区别就在于构造函数名首字母要大写。通过构造函数创建对象的过程叫对象的实例化,创建的对象是实例原创 2020-05-12 16:25:55 · 353 阅读 · 0 评论 -
JavaScript面向对象—— 动态创建tab标签页
昨天呢,介绍了js中类的概念,以及使用类创建对象的过程。今天就用js中的类实现一个小的功能,动态添加、删除标签页。emmmmm,也有点像tab栏切换,不过比tab栏切换多了添加和删除的功能。案例说明js动态实现标签页的创建和删除。这个案例呢,要用类来实现,Tab就是本次案例的类。但在写之前需要来分析并抽象类的特征和行为,也就是对应的类的属性和方法。这里呢,我把元素的ID作为属性,增删改查的四...原创 2020-05-04 16:34:42 · 3733 阅读 · 1 评论 -
JavaScript —— 类的创建和继承
JavaScript是一门解释性语言,但它也跟其他语言有相通的地方,比如类,js中的类与Java中的类的概念是一样的,只不过是js中的类貌似没有Java中的复杂(可能是我还没到达一定的深度)。对于我这种只是停留在了解不了解Java语言的人来说,还是有一定的基础的。哈哈哈哈哈哈。还是正事比较重要。类的创建还是先简单说下类和对象的概念吧。类是指具有相同的属性和方法抽象出来的一类事物,比如说车、衣服...原创 2020-05-03 21:37:43 · 888 阅读 · 0 评论 -
JavaScript中的构造函数的内部原理
我们JavaScript中创建对象的方法有三种方式,第一使用对象字面量创建对象;第二使用 new Object() 创建对象;第三我们自定义一个对象,使用new关键字创建对象。其实第二种方法和第三种方法本质上是相似,都是使用new关键字来创建对象,也就是对象实例化。但是,第二种方式是系统自带的构造函数,第三种就是自己可以定义一个构造器,实现自己的对象。内部原理构造函数的内部原理,...原创 2020-04-05 21:42:07 · 730 阅读 · 0 评论 -
浅析JS闭包 —— 与闭包的初次邂逅
写在前面第一次听闭包的时候,还是在刚决定学习前端的时候我同学加学习好伙伴告诉我的,那个时候感觉好高级啊,听不懂,懵懵的。在学习html和css时也会看到一些技术文章。在看的过程中也会碰到一些比较深入的文章,关于js的内容,我也浏览过写js闭包的文章,也是很认真的硬着头皮看了看。但是呢,发现还是一头雾水,读不懂它的含义,依然是感觉闭包到底是个什么东西,什么叫外部函数可以访问其他函数内部的变量。现...原创 2020-04-02 18:40:47 · 250 阅读 · 0 评论 -
今天明白了立即执行函数不是唯一的
立即执行函数立即执行函数是代码执行读到就立即执行,并且只执行一次,执行完毕后,立即销毁。所以,立即执行函数的一种初始化功能的函数。立即执行函数有两种形式,第一种是W3C推荐的写法。(function (){}())(function (){})()当代码执行到下面的语句时,会在控制台立即输出aaa、bbb,执行后会立即销毁。这就是立即执行函数。 (func...原创 2020-04-01 21:57:44 · 424 阅读 · 2 评论 -
深度解析JS中的作用域和作用域链的问题
写在前面当一个人开始认真过自己的生活时,就是最美好最幸福的时刻,要一直记得这种美好。今天呢,再来掰扯掰扯js中作用域和作用域链的问题,就是我偶然之间发现的一个宝藏老师,看了他对作用域和作用域链的解释,我又了解到了很多我之前不知道的知识。这个宝藏老师呢就是渡一教育的姬成老师,叫成哥吧。哈哈哈哈哈哈哈,就是在哔哩哔哩上面找到的,个人感觉成哥讲的知识点是很好理解的,讲授的知识对刚接触js语言的同...原创 2020-04-01 16:47:54 · 345 阅读 · 0 评论