![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
文章平均质量分 62
BonnieYY
做人,一定要有梦想
展开
-
区别:window-onload和document-ready
document.readyDom树加载完执行window.onload页面资源(比如图片、媒体资源,加载速度远慢于dom加载速度)加载完执行document.ready比window.onload先执行原创 2020-05-11 18:44:16 · 172 阅读 · 0 评论 -
js闭包的题目
letgo=(function(){letv='go'returnfunction(val){v+=valif(val==='l')returnvreturngo}}())console.log(go('l'))console.log(go('o')('l'))console.log(go('o')('o')('l'))golg...原创 2020-05-11 08:28:10 · 310 阅读 · 0 评论 -
js的小题目
let user = { cnt: 1, u: { g() { return this.cnt } }}let o = user.u.gsetTimeout(function(){ console.log('2', user.u.g()) },0)console.log('1', o())1 undefined2 undefined原创 2020-05-08 18:06:59 · 142 阅读 · 0 评论 -
js变量声明和定义的区别
变量声明不开辟内存,只是告诉编译器,要声明的部分存在,要预留部分的空间。变量定义开辟内存。函数的定义1.函数的定义是一个完整的函数单元,包含函数类型、函数名、形参及形参类型、函数体等。2.在程序中,函数的定义只能有一次3.函数首部与花括号间不加分号函数的声明1.函数声明只是对编译系统的一个说明,是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。2...原创 2020-04-23 22:18:58 · 1767 阅读 · 0 评论 -
请你讲一下js监听对象属性的改变具体是怎么实现的,它们各自有什么特点?
(1)在ES5中可以通过Object.defineProperty来实现已有属性的监听Object.defineProperty(user,'name',{ set:function(key,value){ } })缺点:如果id不在user对象中,则不能监听id的变化(2)在ES6中可以通过Proxy来实现var user = new Proxy({},{ set:func...原创 2020-04-13 23:38:40 · 641 阅读 · 0 评论 -
JAVASCRIPT经典设计模式
##设计模式开篇程序设计六大原则单一原则:降低代码耦合度里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则总结:1、在设计程序的时候,职责要尽可能的独立、单一,不要混在一起,混在一起的话,耦合度太高,不安全。2、如果一些功能用到了很多次,尽可能的用继承,但是继承不能够去覆写父类的内容。3、为了让我们的代码更...原创 2020-04-13 22:44:51 · 115 阅读 · 0 评论 -
前端开发必会的JavaScript硬知识
参考:https://blog.csdn.net/zhaolandelong/article/details/88564665**JS = ES + DOM(文档对象类型) + BOM(浏览器对象类型)**知识点1. js数据类型及判断2. 闭包与作用域3. this与执行上下文4. 原型链与继承(原型、构造函数、实例)5. 异步任务6. ES6+常用特...原创 2020-03-30 17:40:38 · 388 阅读 · 0 评论 -
面试经典题目--原生ajax
ajax是一种异步请求数据的技术,对用户体验和程序性能有帮助新建一个ajax对象var xmlhttpif(window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest() }else { xmlhttp = new ActiveXObject()}连接服务器open(method[GET, POST], url (服务器的地址,相...原创 2020-03-24 14:37:57 · 141 阅读 · 0 评论 -
[,1,,2,,3]
```javascriptlet array = [,1,,2,,3];array = array.map((i) => ++i)ES5orEach(), filter(), reduce(), every() 和some()都会跳过空位。map()会跳过空位,但会保留这个值join()和toString()会将空位视为undefined,而undefined和null会被...原创 2020-03-23 17:55:38 · 298 阅读 · 0 评论 -
JS单线程之eventloop
EventLoop是什么?前言: eventloop即事件循环,是指浏览器或Node的一种解决JAVASCRIPT单线程运行时不会堵塞的一种机制,也就是我们经常使用异步的原理。简短:异步解决方案。浏览器的实现:根据html5规范明确定义。node的实现:libuv实现(恐龙头像)–thread pool (关键)google和node都是用v8引擎,但是处理不一样。EventLoop是...原创 2020-03-08 15:56:04 · 212 阅读 · 0 评论 -
js执行上下文--经典题目
functionfoo(x,y,z){//传入x:10y:20//定义函数参数(x,y,z)的个数console.log(foo.length)//3//实际传递的参数个数console.log(arguments.length)//2//arguments.callee指向函数的...原创 2020-02-12 12:42:25 · 351 阅读 · 0 评论 -
js执行上下文
js 代码是如何执行的执行上下文栈变量对象(VO) 作用域链(scope chain) this(静态作用域)执行上下文堆栈: 全局代码、函数代码、eval代码每个代码是在其执行上下文中被取值的有且只有一个全局上下文 可能有多个函数执行上下文以及eval执行上下文执行的时候有执行上下文,不是下载的时候一个函数可能会创建无数个上下文 函数每次...原创 2020-02-12 12:31:04 · 103 阅读 · 0 评论 -
事件处理模式冒泡,事件捕获
重点:1、触发顺序:先捕获,再冒泡。2、ie没有事件捕获3、focus、blur、change、submit、reset、select等事件不冒泡事件冒泡:结构上(非视觉上)嵌套关系的元素(自子元素冒泡向父元素) <style> .wrapper{ width: 300px; height: 300px;...原创 2018-11-29 23:05:58 · 182 阅读 · 0 评论 -
es6数组、对象的基本用法
ecma基本语法还是得了解的 // 数组可接收两个参数,1为回调函数,2为this的指向 //类似于for循环 arr.forEach(function(val,inde,arr){ //this 就是 arr }.bind(this)) arr.forEach(function(val,inde,arr){...原创 2019-01-16 15:52:28 · 234 阅读 · 0 评论 -
数组的常规操作
1、改变原数组push 往最后添加(可添加多位 …arr) 返回数组长度pop 删除最后一位 返回删后数组长度unshift 往开头添加(可添加多位 …arr) 返回数组长度shift 删除第一位 返回删后数组长度splice splice(index,count,content)[ index] 操作数组的第几位 (增加或删除的内容在第几位)[count] 操作的位数(0为增加...原创 2019-03-01 14:47:20 · 166 阅读 · 0 评论 -
js事件的默认行为
a标签 点击跳转contextmenu 右击弹出菜单原创 2019-03-27 16:18:43 · 608 阅读 · 0 评论 -
用原生js实现' a '.trim(),去掉字符串前后空格
去掉字符串前后空格String.prototype.trim = function() { return this.replace(/^(\s*)|(\s*)$/g,'') } ``` 去掉字符串所有空格String.prototype.trim = function() {return this.replace(/\s*/g,’...原创 2019-09-24 23:01:39 · 311 阅读 · 0 评论 -
javscript 合并两个有序链表
两个链表的合并算法输入: 1->2->4,1->3->4输出:1->1->2->3->4->4 function mergeTwoLists(l1, l2) { if(!l1) return l2 if(!l2) return l1 let head ...原创 2019-09-24 23:10:43 · 86 阅读 · 0 评论 -
javascript 获取页面所有标签
let map = {} function getAllTag(node) { if(node.nodeType === 1) { const tagName = node.nodeName map[tagName] = map[tagName] ? map[tag...原创 2019-09-24 23:37:00 · 822 阅读 · 0 评论 -
for...in 和 for...of的区别
for...of返回的是数值for..in返回的是属性直接上代码原创 2019-02-15 13:40:40 · 160 阅读 · 0 评论