JavaScript
文章平均质量分 60
秃头的科比
希望大家多关注 我会在以后的工作生活中不断的去完善文章中的不足之处
展开
-
简单聊聊大家所常说的浅拷贝、深拷贝
数据存储问题基本数据类型因为占用内存较小从而存储在栈内存中,方便查找,同时当基本类型的变量互相赋值时,不会出现值共享问题(即污染变量)。而引用数据类型因为存储在堆内存中,通过一个引用(即内存地址)指向其在堆内存中的空间,因此互相赋值的时候便会出现引用值共享问题。那么如何解决这个问题呢?浅拷贝let arr = [1, 2, 3];let newArr = arr;newArr[0] = 100;console.log(arr);//[100, 2, 3]这是直接赋值的情况,不涉及任何拷贝原创 2021-09-08 09:01:54 · 242 阅读 · 0 评论 -
javascript数据类型中——null和undefined的区别
null和undefined的区别对于大多数计算机语言,有且仅有一个表示"无"的值,比如:C语言的NULL,Java语言的null,Python语言的None。有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么呢?在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没啥区别。因为undefined和null在if语句中,都会被自动转为false;相等运算符甚至直接报告两者相等。//undefined和null在if原创 2021-09-08 08:13:27 · 113 阅读 · 0 评论 -
js的单线程问题
js的单线程问题js是单线程的,其工作原理是将每一个任务切分成多个片段然后交给v8引擎去快速交替按照顺序执行这些片段,这个过程也称为轮转时间片。注意:我们可以借助于 web worker 来模拟实现多线程:worker线程的基础概念web worker 线程的作用就是给 js 创造多线程运行环境,它允许主线程创建一个worker线程,主线程运行的同时worker线程也在运行,两者互不干扰,worker线程运行结束后会将运行的最终结果返回给主线程。这样做的好处是主线程可以把计算密集型或高延迟的任务交给原创 2021-09-08 07:52:50 · 384 阅读 · 0 评论 -
读写样式属性的兼容性写法
DOM是无法直接操作css样式的,它只是通过操作元素标签的style属性从而间接操作css样式的。由于我们是无法直接通过DOM操作访问到css样式表的,所以必须通过以下的方法:(1)window.getComputedStyle(elem, null)[prop];(IE8及以下是不支持的)(2)document.currentStyle(只有IE兼容并且IE8及以下是支持的)兼容模式的封装写法:<style> div { width: 200px;原创 2021-07-22 07:53:42 · 73 阅读 · 0 评论 -
滚动距离、可视窗口大小的获取以及兼容模式写法
获取滚动距离的兼容模式写法常规方法:(1)window.pageXOffset/pageYOffset (注意:IE8及以下是不支持的)(2)document.body.scrollLeft/scrollTop (注意:IE8及以下是支持的)(3)document.documentElement.scrollLeft/scrollTop (注意:IE8及以下是支持的)(4)window.scrollX/scrollY兼容模式的封装写法:<script> //我们还是在这原创 2021-07-16 10:11:34 · 472 阅读 · 0 评论 -
计时器、延时器的学习
setInterval、setTimeout1,setInterval()计时器 clearInterval()清除计时器(1)在运行过程中,是不可以重新给setInterval赋值计时时间的。(2)setInterval参数问题 第一个参数function,必填的,回调函数,可以是一个函数,也可以是一个函数名。 第二个参数delay,可选的,间隔时间,单位是ms。 第三个参数param1,param2,param3…,可选的,是传递给回调函数的参数,比较不常用到,在IE9 及其更早版本原创 2021-07-16 09:46:49 · 984 阅读 · 0 评论 -
DOM基础
常用方法document它包含了整个html文档,其本身也是个对象,因此包含了很多的属性以及方法;基础布局<div id="test"></div><div class="test"></div><div class="test"> <p>我是p</p></div>getElementsByClassName注意:IE8及以下是不支持的let a = document.getEleme原创 2021-07-16 09:07:52 · 115 阅读 · 0 评论 -
探究object.prototype.toString.call()方法的实现原理
Object.prototype.toString.call(1); '[object Number]'Object.prototype.toString.call(NaN); '[object Number]'Object.prototype.toString.call('1'); '[object String]'Object.prototype.toString.call(true); '[object Boolean]'Object.prototype.toString.call(原创 2021-07-14 17:55:42 · 1247 阅读 · 0 评论 -
事件捕获、冒泡、委托的深入学习
事件委托事件委托和事件代理是一个意思。下面我们通过案例来逐步详细深入的学习事件委托。我们需要实现一个为每个li元素添加点击事件的案例 。案例的基本布局如下:<button>按钮</button><ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li&原创 2021-06-28 14:11:48 · 79 阅读 · 0 评论 -
事件监听的深入学习
1、onclick优点:兼容性好。缺点:只能给同一个事件绑定一个处理函数,如果绑定第二个,那么第二个便会覆盖掉第一个事件处理函数。绑定onclick的两种方式:方式一:<button onclick="test()">加载更多</button> function test() { console.log("我是绑定onclick事件的方式一");}方式二:<!DOCTYPE html><html lang="en"> &原创 2021-04-23 17:02:38 · 129 阅读 · 2 评论