js
文章平均质量分 83
zxf_CN
这个作者很懒,什么都没留下…
展开
-
可移动的侧边栏
还是老样子,学习 CodingStartup起码课的 实现可调侧栏 (点击传送门,可以观看 哔哩哔哩up 的视频),就来写文章了,虽然不是什么很好的文章,但我就是要写 ,哈哈哈。今天实现的效果是 可移动的侧栏,鼠标点击拖动,页面重新加载时,可以记录上一次调整的大小,让侧栏保持和上一次调整的大小一致 。以下是修改图:开始吧!关键代码:鼠标点击 mousedown;鼠标移动 mousemove;鼠标松开 mouseup;让页面元素,不能被鼠标选中的样式:user-select:none;转载 2021-05-14 09:11:29 · 805 阅读 · 0 评论 -
实现 (5).add(3).minus(2) => 6
实现 (5).add(3).minus(2),输出结果为 6这个其实就是让我们给 Number 添加2个方法 ,分别为 add 和 minus ,然后我们调用这2个方法,和我们的 数值相加减,输出为 6;英语翻译 add 为 加, minus 为 减;那就是为 5 + 3 - 2 = 6 咯!首先要明白一点,就是原型链的查找机制;我们的所有数据的基类都是 Object 对象;你可以输出console.log(new String())然后一直看输出的数据中的 __propo__ 他一直指翻译 2021-01-24 21:21:03 · 397 阅读 · 0 评论 -
js 中的模块化
模块化概念: 一个模块就是 一个文件,一个脚本 。模块间可以相互加载,使用 import 和 export 关键之来进行 导入 和 导出 。export: 导出 / 暴露 当前模块的 变量 或 函数 。import:导入 另一个模块暴露的 变量 或 函数 。有2中模式:// 1.导入特定的变量 或 函数import { Button } from './xxx.js'// 2.单导入一个文件import './xxx.js'例子:我们在 sayHi.js 文件中转载 2021-01-21 16:07:20 · 491 阅读 · 0 评论 -
js 的 惰性函数
惰性函数知识点: 函数进阶, 函数重写,预编译,堆栈内存1. 概念: 官方说法:惰性函数 表示 函数执行的分支 只会在函数第一次调用的时候执行,在第一次调用的过程中,该函数会被 覆盖 为 另一个按照书写好的函数,之后,再次调用该函数时,就不再经过之前的分支了,执行的函数, 也不是之前的函数了,而是 经过修改后的函数;总结说:就是在执行函数时,函数他 改变 函数自己;(自己理解)。 哈哈哈,听不懂,那看一下例子吧 。2. 背景: 为了解决浏览器的兼容问题,我们会使用 if 判断.转载 2021-01-05 15:30:26 · 943 阅读 · 0 评论 -
又是 闭包?
如何看待闭包?理解方面解释: 函数执行形成一个私有作用域,保护里面的私有变量不受外界的干扰,这种保护机制称为 闭包;口头方面的(面试说这个): 形成一个不销毁的私有作用域(私有栈内存)就是 闭包;如:functon fn () { return function() {}}var f = fn();以上可以称为 闭包,也可以称为: “柯里化函数”如:闭包 => 惰性函数;var utils = (function () { return {翻译 2021-01-02 19:31:03 · 133 阅读 · 0 评论 -
记录学习 -- 函数的上级作用域
函数的上级作用域:函数执行,形成一个私有作用域,函数的上级作用域是谁,和他在哪里执行没有关系,和他在哪里创建(定义)的有关系,在哪创建,他的上级作用域就是谁:var a = 12;function fn() { console.log(1)}function sum() { var a = 123; fn()}sum()问,输出的 a 是 12 还是 123呢!答:输出的是 12,因为函数的上级作用域,和他在哪里执行没有关系,fn() 函数是在 sum()中执翻译 2020-12-30 14:13:44 · 209 阅读 · 0 评论 -
记录学习 -- 私有变量 和 作用域链练习
私有变量 和 作用域链的练习:请看题var ary = [12, 23]function fn (ary) { console.log(ary) ary[0] = 100 ary = [100] ary[0] = 0 console.log(ary)}fn(ary)console.log(ary)你看看会输出多少呢?翻译 2020-12-30 14:09:09 · 138 阅读 · 0 评论 -
记录学习 -- 私有作用域中的私有变量
在私有作用域中,变量 只有以下2种情况是 私有变量:在私有作用域中,如函数:在里面 声明的变量 (var,let,function);形参 也是私有变量;重要重要重要!!!var a = 12, b = 13, c = 14;function fn(a) { console.log(a,b,c) var b = a = c = 20 console.log(a,b,c)}fn(a)console.log(a,b,c)我以为是原创 2020-12-30 13:57:34 · 154 阅读 · 0 评论 -
记录学习 -- ES6 中不存在变量提升 / 预编译:
ES6 中不存在变量提升:在 ES6 中我们可以使用 let 和 const 来命名变量,他们有一些特性:要记住,ES6 语法,代码在执行之前,会进行记录,然后进行检测,如果有重复的就报错;1,切断了 全局变量 和 window 属性的映射机制;console.log(window.a) // undefinedlet a = 12;console.log(window.a) // undefined2,不存在变量提升;console.log(a) // => 报错,没原创 2020-12-30 13:50:12 · 402 阅读 · 2 评论 -
script 标签的 async 和 defer 属性
提问:我们平时都是把 script 标签放到 body 的底部,这是为什么呢?回答: 因为 html 页面是从上而下进行渲染的,遇到 script 标签的话,会进入,去 下载 相应的资源,直到下载好后就会 执行, html 页面才开始继续向下执行,这样会拖慢 html 页面的渲染速度,还有如果一些脚本文件需要操作 DOM,但此时 html 页面还没有加载好,就会报错了;所以一般我们把 script 放到 body 的底部;(总结:放在底部是要等待 html 加载好后,才进行加载);提问: 那 ..原创 2020-12-28 14:47:07 · 385 阅读 · 0 评论 -
加 var 和 不加 var 的区别:
加 var 和 不加 var 的区别:全局作用域下:在全局作用域下使用 var 声明一个变量,相当于给 window 全局对象设置了一个属性,变量的值就是属性值;// 前面2个为 undefined 是因为变量提升,没有值console.log(a) // => undefinedconsole.log(window.a) // => undefined// 但是在 对象 中访问不存在的 属性,也会输出 undefined,就不清楚某个属性 是否存在于对象中,例如console翻译 2020-12-25 15:26:20 · 495 阅读 · 0 评论 -
js 中的继承
js 中的继承1. 原型链继承概念: 让 父类的属性和方法 在 子类实例 的原型链上;方法:让 子类的原型 指向 父类的实例,并且把 父类的实例中的 constructor 指向子类;子类.propotype = new 父类();子类.propotype.constructor = 子类;特性:原型链继承 不像其他编程语言的继承一样(其他编程语言的继承一般是拷贝继承,就是 子类 继承 父类,会把父类的属性和方法都拷贝一份到子类中,供子类的实例使用);他是把 父类的原型 放到翻译 2020-12-22 20:25:17 · 142 阅读 · 0 评论 -
call, bind,apply 的区别?
call, bind,apply 的区别?call 和 apply 调他们既可以改变函数 this 的指向,传递参数 和 调用函数;他们只有一个区别,就是参数的格式,call 是一个一个数,apply 是一个数组;bind 他呢,也和 call , apply 一样,只是 不会自动调用函数;call:功能:调用函数,传递参数,改变函数的 this 指向;结构:fn.call(this的指向,传递的参数)使用:function fn (x, y) { console.log(thi原创 2020-12-20 17:01:02 · 106 阅读 · 0 评论 -
对象的 属性名(键)
对象的 属性名(键)var key1 = new Object(); // {}var key2 = new Object(); // {}var obj = new Object();obj[key1] = 'a';obj[key2] = 'b';console.log(obj[key1]); A. “a”B.“b” C. error D. undefined核心: 由于 对象的属性名只能是 数字,字符串,布尔值, 变量; 如果是对象,那么,会把 对象 转为 字符串,在原创 2020-12-14 17:43:51 · 376 阅读 · 0 评论 -
let 和 定时器
看题for (let i = 0; i < 3; i++) { setTimeout(() => { console.log(i); }, 2000)}A. 0, 1, 2B. 2, 2, 2C. 0, 0, 0D, 2, 1, 0用循环,在定时器中,输出循环的 i,用 let 不会因为定时器是异步的,就输出 i 为累加后的结果;所以还是选 A 。拓展:for (var i = 0; i < 3; i++) {原创 2020-12-14 16:48:58 · 252 阅读 · 0 评论 -
undefined 和 null 的区别
以下情况下值为 undefined:1,声明一个变量,没有赋值;2,访问对象不存在的 属性;3,函数的形参没有传递实参进去,形参为 undefined4,函数没有返回值,输出为 undefinednull 的情况一般是我们设置的,他是一个 对象类型的,使用 typeof 会输出 Object 类型;还有他和 undefined 是相等的,但不全等: null == undefined // true null === undefined // false总结:undefined原创 2020-12-10 23:08:25 · 199 阅读 · 1 评论 -
搭建静态的响应式个人官网
这几天看到了一个视频(哔哩哔哩 up: 峰华前端工程师)的一个教程,是做一个响应式的官网,用到了好多的 js 包,虽然说使用别人的包,但是效果是很好看的。项目所用到的库有: anime: 动画库,里面有各种动画实现,链接:http://www.animejs.cc/ 。 glide: 轮播图库, 链接:https://glidejs.com/ 。 isotope: 筛选排版库, 链接:https://isotope.metafizzy.co/ 。 scrollreveal:滚动动画库, 链接:h.原创 2020-12-03 16:45:49 · 905 阅读 · 0 评论 -
扩展运算符小用法
当我们发起请求后,在获取的数据中,我们想要修改 或 给他添加一个属性,可以使用 扩展运算符 来辅助:如:请求到的数据:// 微信小程序// 发起请求const { orders } = await request({ url: '/my/orders/all', data: type})// 存储到 data 中this.setData({ orders})orders 我们想要在里面添加一个 属性,记录商品的数量,但又不想改变里面的其他值:orders 的数原创 2020-11-25 16:14:23 · 178 阅读 · 0 评论 -
Object.create()
Object.create()记录学习:概念: 方法创建一个新对象,使创建出来的新对象的 _proto_ 指向原对象;语法:Object.create(proto[,propertiesObject])参数:proto: 新创建对象的原型对象 。propertiesObject: 可选,没有指定就为 undefined, 他是给 新创建 的对象添加自身属性 。第二个参数他是一个对象,里面的都是 新创建对象的属性,每个属性都有很多方法:value: 指定属性的属性值;返回值: 返回一个原创 2020-08-28 10:43:06 · 226 阅读 · 0 评论 -
Object.values()
Object.values()看题:最后输出什么?const chars = {2: 'e', 5: 'o', 1: 'h', 4: 'l', 3: 'l'};const result = Object.values(chars).reduce((acc, ele) => { return acc + ele}, '');console.log(result)A. eohll B.hello C.undefined D Error解决:Obje原创 2020-08-26 09:11:51 · 477 阅读 · 0 评论 -
2020-08-24
map 和 parseInt 组合看题:输出的是什么?const arr = ['1', '2', '3'].map(parseInt)我们可以看作:const arr = ['1', '2', '3'];arr.map((item,index) => { return parseInt(item, index);})过程是:parseInt('1', 0); // radix: 0 ,所以基数采用 10, 正常取整 => 1parseInt('2', 1); /原创 2020-08-24 14:53:52 · 138 阅读 · 0 评论