javaScript
web不可或缺的一部分
Double_路
学不可一蹴而就,坚持是胜利之光
展开
-
字节一面代码题2021/9/6
题目:给一个promise,它如果十秒内可以执行出结果就打印出结果,如果十秒内解决不出来就会直接返回失败 let p = new Promise((resolve, reject) => { setTimeout(() => { resolve('success') }, Math.random()*20000) setTimeout(() => { reject('fail') }, 10000) }) p.then((data) => {原创 2021-09-07 08:56:43 · 105 阅读 · 0 评论 -
实现事件委托
事件委托就是把本该自己做的事情交给别人帮我做 function delegate(element, eventType, selector, fn) { // 对传过来的元素添加事件监听 element.addEventListener(eventType, e => { // el是想要被监听的对象 let el = e.target // 用来判断当前DOM节点是否能完全匹配对应的CSS选择器规则,返回值是Boolean原创 2021-09-03 09:47:47 · 163 阅读 · 0 评论 -
Promise.all的实现
Promise.prototype.all = function (promises) { let result = [], promiseCount = 0, promisesLength = promises.length return new Promise(function (resolve, reject) { for (let val of promises) { Promise.resolve(val).t原创 2021-08-26 15:39:58 · 159 阅读 · 0 评论 -
代码实现一个Promise
function Promise(executor){ let self = this self.status = 'pending' self.value = undefined self.reason = undefined function resolve(value){ if(self.status==='pending'){ self.status = 'resolved' self.value原创 2021-08-26 15:03:32 · 71 阅读 · 0 评论 -
创建对象的几种方式
创建对象的几种方式: 1. new Object() 2. 字面式创建:let person = {name:‘kaku’} 3. 工厂模式:上面两种方法在使用同一个接口创建多个对象的时候,会产生大量的重复代码 function createPerson(name,age,family) { var o = new Object(); o.name = name; o.age = age; o.family = family; o.say = function(){ alert(this.name); }原创 2021-08-17 10:35:07 · 108 阅读 · 0 评论 -
new一个对象的时候发生了什么
new一个对象的时候发生了什么: 1. 新生成一个对象 2. 链接到原型obj.proto= Object.prototype 3. 绑定this 4. 返回新对象 实现一个简单的new: function newGenerater(fn, ...args) { const result = new Object(); result.__proto__ = fn.prototype; const res = fn.call(result, ...args); return (原创 2021-08-17 10:09:17 · 59 阅读 · 0 评论 -
js中数字字符串相加减的问题
let a = 100; let b = "100"; console.log(b- a); //0 console.log(typeof (b- a)); //number console.log(a*b);//10000 console.log(typeof(a*b));//number console.log(a + b - a); //100000 console.log(b*b);//10000 console.log(typeo.原创 2021-08-14 16:46:47 · 1217 阅读 · 0 评论 -
函数防抖与函数节流
函数防抖 简单点来说就是带着一起做,一段时间内会等,然后带着一起做 function debounce(fn,delay){ let timerId = null return function(){ if(timerId){window.clearTimeout(timerId)} timerId = setTimeout(()=>{ fn.apply(this,arguments) timerId = null },delay) } } 函数节流 就是一段时间执行完原创 2021-08-10 15:29:12 · 74 阅读 · 0 评论 -
ES6新增常用语法总结
一、新的变量声明方式 先说说之前我们用的var吧,只要声明一个变量,它就会被挂到window上面,很不安全也不方便。 const 声明时必须初始化,值不能被改变(类似于常量),常用来声明一个值不会被改变的量。当值为基础数据类型时,那么值就是它本身,不可被改变;如果值为引用数据类型时(对象、数组),值就指的是它的引用,只要引用不变即可,仍可改变引用指向的对象里的值。 let 声明的变量可以重新赋值,但是不能在同一作用域内重新声明,常用来声明一个汇编改变的变量。 区别:const不可变,let可变,如果声明原创 2021-08-02 19:02:58 · 333 阅读 · 0 评论 -
浅析 MVC
一 、MVC的三个对象 Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。 View(视图) - 视图代表模型包含的数据的可视化。 Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。 Model代码,所有和数据相关的都放在这里 class Model={ data(){} //保存数据 //管理数据的用法 crea原创 2021-07-15 14:37:42 · 128 阅读 · 1 评论 -
查看子代的API
查看元素子代的API有两个: childNodes children 但是两者有很大的不同: <ul id="test"> <li>1</li> <li>1</li> <li>1</li> </ul> test.childNodes的值是7,空格也算,只是会缩成一个 但是test.children的值是3 <ul id="test"><li>1</li&原创 2021-06-07 14:31:09 · 44 阅读 · 0 评论 -
JS函数的执行时机
话不多说,直接上,看下面这段JS代码: let i = 0 for(i = 0; i<6; i++){ setTimeout(()=>{ console.log(i) },0) } 上面这段代码会打印出6个6 setTimeout()的含义是过一会再执行,过一会就是暂时执行完当前正在做的事情,上面代码中当前正在做的事情就是在进行i循环并不断i++,循环结束之后就已经积攒了六次“过一会”,这是i的值是6,所以打印出6个6 问题来了,我就想打印出0、1、2、3、4、5咋办原创 2021-05-28 10:17:29 · 51 阅读 · 0 评论 -
JS对象基本用法
声明对象的两种语法 let obj = {‘name’ : ‘marry’, ‘age’ : 18} let obj = new Object({‘name’ : ‘marry’}) 如何删除对象的属性 对于var obj = {‘name’ : ‘marry’, ‘age’ : 18} obj.name = undefined 是删除键的值 delete obj.name是删除键和值,或者delete obj[‘name’] 如何查看对象的属性 查看自生所有属性 Object.keys(obj)原创 2021-05-16 17:10:11 · 190 阅读 · 0 评论 -
symbol数据类型
推荐方方老师的回答:https://zhuanlan.zhihu.com/p/22652486原创 2021-05-02 14:51:59 · 70 阅读 · 0 评论 -
JS的基本语法
一.什么是表达式和语句 语句: 一般情况下,在JS里每一行就是一个语句。 语句是为了完成某种任务而进行的操作,比如赋值语句: var a = 1; 表达式: 表达式是由运算符构成,并运算产生结果的语法结构。一个表达式会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数。 a=function (){return 6}; b=1+a();<br>//其中1+a()就是一个表达式 function a(aa){alert aa+1;} b=1; a(b+6);<br&原创 2021-05-01 20:58:48 · 161 阅读 · 0 评论 -
JavaScript的历史
一、JavaScript的出生 最初版本于1995年由布兰登花费十天就设计出来,非常的仓促,当时网景公司(现在已经没了)只是为了蹭Java的流量而生,是一门为浏览器设计的一个脚本语言。 直到现在,Java在浏览器端基本死亡,所以JavaScript经历就是弟弟逆袭的过程O(∩_∩)O哈哈~。 二、浏览器大战中选对方向 1996年8月IE3发布,支持JScript(微软自己开发的),这时浏览器大战开始。 1996年11月,网景向ECMA提交语言标准,由于版权问题,JS语言的标准叫ECMAScript(Jav原创 2021-04-24 17:58:19 · 298 阅读 · 1 评论 -
异常捕获和事件的处理
异常捕获和事件的处理 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>异常捕获和事件的处理</title> </head> <body> <!-- 异常:当JavaScript引擎执行JavaScript代码时,发生了错误,导致程序停止运行 异常抛出:当异常产生,并且将这个异常生成一个错误信息 异原创 2020-12-07 17:20:15 · 124 阅读 · 0 评论 -
JavaScript事件
事件 事件:是可以被JavaScript侦测到的行为 主要事件: onclick onMouseOver onMouseOut onChange 单击事件 鼠标经过事件 鼠标移出事件 文本内容改变事件 onSelect 文本框选中事件 onFocus onBlur onLoad onUnload 光标聚集事件 移开光标事件 网页加载事件 关闭网页事件 <!DOCTYPE html> <ht原创 2020-12-07 17:16:41 · 54 阅读 · 0 评论