总结
-
框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。
-
算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯
-
在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。
-
要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!
喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!
例子:
=================================================================================
良好的代码风格使得代码更加具有可读性,适当的注释代码,对于日后代码的维护也是非常有利的。来看个例子:
-
- 春意盎然
- 春意盎然
- 春意盎然
- 春意盎然
-
- 夏日炎炎
- 夏日炎炎
- 夏日炎炎
- 夏日炎炎
-
- 秋高气爽
- 秋高气爽
- 秋高气爽
- 秋高气爽
代码很简单,我们没有加入 css 样式这些,主要还是讲解 jQuery,运行效果为:
简单解释一下这段代码,当鼠标点击到 a 标签的时候给其添加一个名为 current 的 class,然后调用 next() 和 show() 将其后面的元素显示出来,然后调用 parent()、siblings()、children(“a”) 将它的父辈的同辈元素的内部的子元素 a 都去掉一个名为 current 的 class (removeClass(“current”)),并且将紧邻它们后面的元素都隐藏。
这就是 jQuery 的强大的链式操作,一行代码就完成了我们导航栏的功能,大家可以试着去写一下原生的 JavaScript 代码,看看需要写多少行,这也就是我们 jQuery 的魅力所在。当然上面的那些方法看不懂也没关系,后面都会讲解的。不过为了进一步改善代码的可读性和可维护性,推荐一种写法:
$(document).ready(function () {
$(“.level1>a”).click(function () {
$(this)
.addClass(“current”) //给当前元素添加"current"样式
.next()
.show() //下一个元素显示
.parent()
.siblings()
.children(“a”)
.removeClass(“current”) //父元素的同辈元素的子元素a移除"current"样式
.next()
.hide(); //它们的下一个元素隐藏
return false;
});
});
也就是说适当的换行和添加注释可以让我们对代码作用一目了然,增加代码的可读性,便于日后的维护,提高开发效率。
=======================================================================================
DOM (Document Object Model)对象,也就是我们经常说的文档对象模型,每一份 DOM 都可以表示成一棵 DOM 树:
比如这样的一段代码:
h1,p,ul 以及 li 标签都是 DOM 元素节点,我们可以通过 JavaScript 中的 document.getElementById(),document.getElementsByTagName() 等来获取元素节点,像这样获取的 DOM 元素就是 DOM 对象,DOM 对象可以使用 JavaScript 中的方法,比如:
var domObj = document.getElementById(“id”); //获取DOM对象
var objHtml = domObj.innerHTML; //使用JavaScript中的属性innerHTML
jQuery 对象就是通过 jQuery 包装 DOM 对象后产生的对象。jQuery 对象是 jQuery 独有的,如果一个对象是 jQuery 对象,那么它就可以使用 jQuery 里的方法,比如:
$(“#xnm”).html(); //获取id为syl的元素内的html代码,html()是jQuery中的方法
这段代码等同于:
document.getElementById(“xnm”).innerHTML;
在 jQuery 对象中无法使用 DOM 对象中的任何方法,例如 $(“#xnm”).innerHTML; 之类的写法是错的,可以使用 $(“#xnm”).html(); 之类的 jQuery 方法来代替,同样的道理,DOM 对象也不能使用 jQuery 里的方法,例如:document.getElementById(“xnm”).html();也是会报错的。
注:用 #id 作为选择符取得的是 jQuery 对象而并非 document.getElementById(“id”); 所得到的 DOM 对象,两者并不等价。我们一定要从开始就树立这样的一个观念:jQuery 对象和 DOM 对象是有区别的,它们并不是等价的。
在讲解 jQuery 对象和 DOM 对象之间的相互转换之前,我们先约定好定义变量的风格,如果获取的是 jQuery 对象,那么我们在变量前面加上 $ 符号,例如:
var $test = jQuery 对象;
如果获取的是 DOM 对象:
var test = DOM 对象;
注:这里加个$只是为了区分变量是 jQuery 对象还是 DOM 对象并不是说所有使用 jQuery 的代码中变量声明都需要只是为了区分变量是jQuery对象还是DOM对象并不是说所有使用jQuery的代码中变量声明都需要。
5.3.1 jQuery 对象转换为 DOM 对象
我们前面说过 jQuery 对象不能使用 DOM 中的方法,但是如果我们又不得不使用 DOM 中的方法呢?比如:对 jQuery 对象所提供的方法不熟悉或者忘了但是知道 DOM 中的方法,自己又很懒不想去查 jQuery 手册或者 jQuery 本身就没有封装我们想要使用的方法。有以下的两种处理方法:
- [index]:jQuery 对象是一个类似数组的对象,可以通过 [index] 的方法得到对应的 DOM 对象,比如:
var $cr = $(“#cr”); //jQuery 对象
var cr = $cr[0]; //DOM 对象
- 通过 get(index) 方法得到相应的 DOM 对象,比如:
var $cr = $(“#cr”); //jQuery 对象
var cr = $cr.get(0); //DOM 对象
5.3.2 DOM 对象转换为 jQuery 对象
对于一个 DOM 对象,只需要用 $() 把 DOM 对象包装起来,就可以获得一个 jQuery 对象了,比如:
var cr = document.getElementById(“cr”); //DOM 对象
var $cr = $(cr); //jQuery 对象
注:这里再次强调一次,DOM 对象才能使用 DOM 中的方法,jQuery 对象不可以使用 DOM 中的方法,但 jQuery 对象提供了一套更加完善的工具用于操作 DOM,在后面的学习中,我们都会为大家一一的进行讲解。我们平时用到的 jQuery 对象都是通过 () 函数制造出来的,()函数制造出来的,() 函数就是一个 jQuery 对象的制造工厂。
下面我们来看个例子:
DOM 方式判断复选框是否被选中:
jQuery 方式判断复选框是否被选中:
注:上面的例子简单的演示了 DOM 对象和 jQuery 对象的不同,但是最终的运行效果是一样的。
=======================================================================================
jQuery 使用 $ 符号作为 jQuery 的简写。如果其他 JavaScript 框架也使用符号作为jQuery的简写。如果其他JavaScript框架也使用 符号作为简写怎么办?
其他一些 JavaScript 框架包括:MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 以及 Ext JS。
其中某些框架也使用 $ 符号作为简写(就像 jQuery),如果您在用的两种不同的框架正在使用相同的简写符号,有可能导致脚本停止运行。
jQuery 的团队考虑到了这个问题,并实现了 noConflict() 方法。
noConflict() 方法会释放对 $ 标识符的控制,这样其他脚本就可以使用它了。当然,我们仍然可以通过全名替代简写的方式来使用 jQuery:
这是一个段落。
点我
我们也可以创建自己的简写。noConflict() 可返回对 jQuery 的引用,我们可以把它存入变量,以供稍后使用:
最后
我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
篇幅有限,仅展示部分截图: