![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
哆啦咪唏
这个作者很懒,什么都没留下…
展开
-
JavaScript Dom编程艺术 读后感(1)
JavaScript Dom编程艺术 读后感(1)最近既不是闲来无事,也不是空穴来风,就是买了这本书一年多了,之前看过一遍,当时看的懵懵懂懂。最近又看到这本书了,所以来重读一遍。现在已经看了一半了,所以来记录一下自己的心得。1.前三章基本都是在讲一些基本的知识:js的发展史、基础语法知识以及Dom的基本知识点,都是些比较简单的概念,知道就行;2. 重头戏应该从第四章开始,案例是建立javascript图片库,并不断进行优化和改善。html与javascript代码分离 (页面与逻辑分离)htm原创 2021-03-06 20:30:50 · 233 阅读 · 2 评论 -
数组常见方法、数组去重
数组中的常见方法变异方法(原数组会发生改变):pop、push、unshift、shift、reverse、sort、splice非变异方法(原数组不会发生改变,返回一个新数组): slice、concat、join、indexOf、lastIndexOf、forEach、es6中新增的方法(map、reduce、filter、some、any)、扩展运算符数组常见的遍历方法:forEach:无返回值map:reducefiltersomeevery(…)//forEach:无返回原创 2021-02-25 17:59:28 · 196 阅读 · 1 评论 -
数组拍平,也即扁平化
数组扁平化数组扁平化:就是将[1,2,[3,4],[5,[6,7]],8]转化为[1,2,3,4,5,6,7,8]。方法一:采用递归的思想,并借助数组的reduce方法 function flatten(arr) { return arr.reduce((a,b)=>{ return a.concat(Array.isArray(b)?flatten(b):b) },[]) }方法二: //正则表达式 function原创 2021-02-25 15:10:00 · 157 阅读 · 0 评论 -
js获取css属性值的方法
js操作获取dom元素的样式属性值obj.style: 只能获取行内属性,而无法获取定义在<style type="text/css">里面的属性。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">原创 2021-02-14 20:45:00 · 2293 阅读 · 1 评论 -
对Promise的个人理解
Promiselet promise=new Promise(function(resolve,reject){ // resolve函数是当promise状态由pending转为fulfilled时执行 // reject函数是promise状态由pending转为rejected时执行 // 只有当resolve或reject函数执行之后,此时promise的状态才发生变化,才能执行promise.then或promise.catch方法,且将resol原创 2021-01-30 12:16:04 · 154 阅读 · 0 评论 -
ajax和jQuery封装的ajax
ajax和jQuery封装的ajaxajax:异步的javascript和xml// 1.创建AJAX实例对象let xhr ;if(window.XMLHttpRequest){ xhr=new XMLHttpRequest;}else{ //为了兼容IE5、6 xhr=new ActiveXObject('Microsoft.XMLHTTP');}// 2.打开URL(发送请求前的处理)xhr.open(method, url, async); //true 为异原创 2021-01-30 08:30:23 · 83 阅读 · 0 评论 -
es6之map和set
es6之map和setes6新提供了两种数据结构map和set,都可以用来保存键值对。Map:map 的key不仅可以是字符串,也可以是其他类型的值,包括对象。由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:map的方法 map.size 属性 map.keys()//返回所有key map.values();//返回所有value map.set(key,value)//添加 map.has(key) //返回boo原创 2021-01-21 11:48:35 · 112 阅读 · 0 评论 -
多数元素
多数元素Leetcode169 简单题目描述:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。思路:抵消思想(摩尔投票法),哈哈哈,想到了动物世界里面李易峰帅气的推理。回归正题,定义变量count=1,temp=arr[0],temp作为比较数之一,一直和数组中的其他元素进行比较。从数组第二个元素开始比较,如果与temp相同,则count+1,若不同则count-1; 当c原创 2021-01-21 10:51:22 · 136 阅读 · 0 评论 -
只出现一次的数字
只出现一次的数字leetcode136题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。//js的indexOf和lastIndexOf()方法var singleNumber = function(nums) { for(let i=0,len=nums.length;i<len;i++){ if(nums.indexOf(nums[i])==nums.lastIndexOf(nums[i])){原创 2021-01-20 22:18:01 · 57 阅读 · 0 评论 -
js之function与object的原型链关系
js之function与object的原型链关系自己第一次用xmind画的图,比较丑。看红宝书的时候看到创建对象的几种方式时,突然想到这个,顺手划一波。 //构造函数模式 function Person(name,age){ this.name=name; this.age=age; this.getName=function(){ return this.name } } let p1=ne原创 2021-01-16 09:51:47 · 284 阅读 · 2 评论 -
合并两个有序整数数组
合并两个有序整数数组为一个数组。用js实现。已知有序数组A和B,返回合并后的有序数组res。主要思想是 先比较A和B的最后一个元素,将较大的元素放入res的最后一位,同时将该元素所在的数组长度减一。一直循环,直到某个数组长度为零为止。 此时,还需要判断另外一个数组是否长度为零,若不为零,则也将其全部放入res中。 // 合并两个有序数组 function merge(A, B) { let m = A.length, n = B.length;原创 2021-01-15 20:46:40 · 555 阅读 · 0 评论 -
js单例模式
js单例模式 // 1.单例设计模式(最原始的模块化思想):保证一个类仅有一个实例,且提供一个访问它的全局访问点 // 思想:新建对象时首先判断全局是否有该对象,如果有,就返回该对象,如果没有就创建一个新对象返回。 // 方法:创建一个类,类中有一个方法可以创建该类的实例对象,还有一个标记用来判断是否已经存在实例对象,如果没有存在,调用的时候会创建实例对象,如果已经存在,则再次调用时,会返回之前已经创建好的实例对象。 var Single=(function(){原创 2021-01-08 12:14:36 · 282 阅读 · 0 评论 -
入门前端的学习路线
入门前端的学习路线工欲善其事,必先利其器。前端学习必不可少敲代码,所以编译环境和工具必不可少。我这里推荐自己比较喜欢的sublime和vscode(visual studio code)。具体安装过程很简单,可以参考vscode安装使用教程老生常谈的三件套必备:html+css+jshtml和css推荐:文档的话推荐菜鸟教程和MDN视频的话推荐:黑马程序员pink老师前端入门视频教程 HTML5+CSS3+移动端布局-flex布局rem布局响应式布局摹客蓝湖使用-简单有趣好玩b站上有很多的视频,感原创 2021-01-07 12:05:44 · 102 阅读 · 2 评论 -
es6之解构赋值
解构赋值:数组解构:只要等号右边是可遍历的数据结构(转为对象后具备或本身具备Iterator接口)可以拥有默认值,只有当数组成员严格等于undefined,默认值才会生效。默认值是一个表达式时,该表达式是惰性求值的。对象解构:数组解构是按次序排列的,而对象解构没有次序,只是变量必须与属性同名,才能取到正确的值。对象的解构赋值可以取到继承的属性。也可以指定默认值,默认值生效的条件是对象的属性值严格等于undefined字符串解构 :字符串被转换为类数组对象。解构赋值的规则是,只要等号右边的值不是对原创 2020-12-30 13:54:53 · 71 阅读 · 0 评论 -
let、var和const的比较以及块级作用域,顶层对象
let、var和const的比较,以及块级作用域let和const是es6新增的用于声明变量的命令。let和const所声明的变量(常量)只在其所在的作用域内有效。let和const 不存在变量提升。变量必须在声明之后才能使用,否则报错。即存在暂时性死区。暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。在同一个作用域内,let和const不允许重复声明。const主要是用来声明常量,本质是声明变量所指原创 2020-12-30 12:30:11 · 232 阅读 · 0 评论 -
LeetCode之两数相加
LeetCode(2)// 两数相加,用链表表示 2->4->3 + 5->6->4 = 7->0->8 342+465=807function ListNode(val) { this.val = val; this.next = null;}function addTwoNumber(v1, v2) { let Node = new ListNode('head'); let temp = Node; le原创 2020-06-15 21:58:37 · 129 阅读 · 0 评论 -
Leetcode之两数之和
leetcode(1)两数之和两数之和// 从给定数组arr中找出两个元素的和为target,返回两个元素的下标。两个元素不能重复,且每个数组中只能返回一组答案。// 1.暴力法 function sum(arr, target) { for (let i = 0; i < arr.length; i++) { let temp = target - arr[i]; for (let j = i + 1; j < arr.length; j++)原创 2020-06-15 20:01:58 · 96 阅读 · 0 评论 -
js中Compose函数实现扁平化
js实现扁平化思想// 将前一个函数的结果作为初始值带入下一个函数中,实现函数的扁平化function compose(...funcs) { //...func为传入的函数 return function proxy(...args) {//...args为第一次调用函数所传入的参数 let len = funcs.length; if (len === 0) { return args; } else if (len原创 2020-05-31 22:16:08 · 470 阅读 · 0 评论 -
js中this指向的五种情况以及call、apply、bind的重写
js中this指向的五种情况给元素的某个事件行为绑定方法,事件触发时,函数执行,此时的this一般都指向当前的这个元素。// 给某个元素添加事件,要兼容DOM0和DOM2function emit(element,type,func){ //当调用多次emit时,要进行多次判断 if(element.addEventListener){ element.addEventListener(type,func,false); }else if(element.attac原创 2020-05-31 21:11:27 · 303 阅读 · 2 评论 -
js的数据类型以及判断类型的四种方法
js数据类型及判断类型的四种方法数据类型基本数据类型引用数据类型四种判断类型的方法typeof方法constructorinstanceofObject.prototype.tostring.call()数据类型基本数据类型null:表示定义为空undefined:表示未定义stringnumber:特殊的两个符号:NAN和infinitybooleansymbolbigInt引用数据类型objectfunction四种判断类型的方法typeof方法construct原创 2020-05-31 20:24:12 · 216 阅读 · 0 评论