- 博客(24)
- 收藏
- 关注
原创 React精讲(三)jsx本质源码分析
前面两讲讲到了react的书写方法,也讲到必须引入babel且在script标签上加上一个type="text/babel"的属性,jsx才能被执行。那么这一讲,我们将深入到jsx的本质,具体了解jsx的来龙去脉。jsx本质实际上, jsx仅仅只是React.createElement(component, props, …children) 函数的语法糖。语法糖:“生活有了糖会更甜,没有还是照样过”,上面这句话很形象地讲到了语法糖的作用,它是将一个较为复杂的代码封装成一个供开发者简单使用的形式,
2021-11-01 19:01:20 634
原创 React精讲(二)jsx核心语法
小案例-jsx引入在将jsx核心语法之前,先上来一个案例,复习一下上一讲组件化的内容,“电影列表”:仍然是在html页面中开发:step1 :引入依赖(这里不讲了,见上一讲React精讲(一)原生react)step2 :渲染页面:ReactDOM.render(组件, 将挂载的对象)step3 :封装组件App:创建App类,继承React.Component,创建构造方法,构造方法中要用this.state初始化下面要用到的数据movies。以上的准备工作都完成后,就准备在render函数中
2021-10-27 23:48:54 503
原创 React精讲(一)原生react
React是什么?react是一个优秀的js库(它与Vue,Angular并称为前端开发的三大框架),它比过去流行的js库jQuery更加好用。React的起源react是Facebook开源的js框架,Facebook推出这一框架的原因:(这主要源于在完成一个前端需求时所产生的bug)上述界面中,每个图标的右上方都有一个动态变化的数字,如果仅仅用js来维护,我们通常会把这三个数字放在一起来维护,但这样在对这三个图标做大量点击操作时,数字的变化常常会产生许多bug于是Facebook的工程师就思
2021-10-24 15:49:59 1858
原创 LeetCode刷题总结(九)29 - 31 -- 二进制倍增,位运算,滑动窗口
(一)LeetCode29:两数相除暴力做法是循环 x -= y,x为被除数,y为除数,减到 x 小于 y 为止,每减一次计数变量 ++,最后输出计数变量。然而以上这种做法显然是会超时的!!!高级解法是二进制移位倍增,其实这也是计算机实现乘除法的本质。...
2021-10-16 21:43:11 322
原创 Leetcode刷题总结(六)17 - 19 -- dfs
(一)LeetCode17:电话号码的字母组合本题是一个非常经典的dfs问题,暴搜问题。对于dfs问题考虑不清楚的时候,可以画一个树,把情况都枚举一下:(本题号码映射问题的树如下,不过这是树的部分)画出这棵树之后,我们要考虑的问题就是要将其转化为代码:首先,在递归的时候,我们要存下来方案是什么 – 方案即为路径 string path;还需要存下来当前是第几位,int u。还有一个问题,如何将数字对应成多个字母,这里有一个小技巧,就是开一个数组。...
2021-10-11 21:12:34 165
原创 LeetCode刷题总结(九)26 - 28 -- kmp算法
本节都是简单题,但仍然有它们的魅力所在。(一)LeetCode26:遇见本题,也许你的做法是:(没错,这就是我开始的做法,但。。。超时了)class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.empty()) return nums.size(); // 判空条件一定要写啊 int count = 0; for(int i = 0;
2021-10-06 10:01:45 659
原创 LeetCode刷题总结(八)23 - 25
(一)LeetCode23:合并K个升序链表本题是lc21的升级版,lc21是合并两个链表,而本题是合并k个升序链表。
2021-09-29 15:09:34 104
原创 Leetcode刷题总结(五)14 - 16
(一)LeetCode14:最长公共前缀本题乍看很难,好像要遍历很多次,但其实只需以第一个字符串元素为参照,去遍历其他所有字符串即可。而且本题可以不使用双指针,可以用i一个变量完成所有的遍历:代码示例:class Solution {public: string longestCommonPrefix(vector<string>& strs) { string res = ""; if (strs.empty()) return res;
2021-09-23 08:33:07 103
原创 git操作难点1 -- 找到过往,合并未来
问题1该问题模拟了:场景 :删除项目文件的一部分内容后,在同一个文件里写入了新的内容问题 :因为某些需要找回了原来的内容,找回原来内容后,这时我们又同时要找回新的内容(因为找回原来内容时覆盖了新内容),该怎么办?先连续向git仓库中add并commit六次,readme.md为控制台所在目录下的目标文件git init // git 初始化// 下面执行6次写入add 和 commit//写入:feature-1git add .\readme.mdgit commit -m
2021-09-07 17:54:02 255
原创 JS文件加载/阻塞问题(性能优化)
上来先给一个问题:在书写html页面时,当你要从外部引入js文件时,主html文件:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js阻塞</title> &
2021-09-06 11:42:22 4233 2
原创 实例中对比理解js数组api -- map()与reduce()
最近在了解前端存储:1、 localStorage 长期 5MB sessionStorage2、 cookie3、 IndexDB其中cookie的内容以key-value的形式存储,每次请求的时候一定要带上cookie,cookie是一段文本,那么如何将cookie文本parse成 json对象类型呢?如何查看浏览器中的cookie文本:document.cookie...
2021-09-03 11:33:18 204
原创 JS实现单例设计模式(面试最常考的设计模式之一Σ(⊙▽⊙“a)
单例模式单例模式简单来说就是使类只能实例化一次,并提供一个能够访问它的全局接口。js中由两种实现思路,一种是将访问接口实现为静态方法,创建对象只执行一次;还有一种是利用闭包,通过闭包的方式 给全局暴露一个 实例化对象 ,内部 只能实例化一次思路1 静态方法它是未来大型应用的开发需要new Singleton() 类实例化的简单用法不合适了,Singleton.getInstance() 静态方法那么怎么绕过new? 绕过实例化的过程,使用类上的静态方法就可以了以后要获取单例, 通过Sing
2021-09-01 14:36:34 459 2
原创 了解浏览器缓存-本地存储之localStorage
storage 整个考点:JSON.stringify 变成字符串,省体积JSON.parse 把字符串变回为json对象localStorage 是前端的对象, 最终是存在浏览器分配的文件空间中在node后端中是没有的数据的存储方式: 变量内存中,cookie, http有状态, 文件 ,books.json, storage(K-V),数据库map()方法:es6里的数组新方法,将一个数组变成另一种形式的数组JSONArray -> htmlArr -> html l
2021-08-15 15:04:59 3466
原创 2道js基础面试题与1道css基础面试题
js面试题No.1编写一个函数,它接受一个由10个整数组成的数组(0-9之间),该函数以形似(123)456-7890 的美国电话号码的形式返回 这个数字的字符串思路1在这里插入代码片思路2在这里插入代码片No.2facebook 实现一个函数, 它的输入是一个数组, 其中包含喜欢 该项目的人的姓名,返回值 是如下格式:输入1:[] 输出1: “no one likes this”输入2:[“Peter”]输出2:“Peter likes this”输入3:[“Jac
2021-08-10 23:18:03 87
原创 LeetCode刷题总结(二)4-6
(1)LeetCode1:寻找两个正序数组的中位数两个有序数组,要求这两个数组合并之后(也是排好序的)的中位数(如果总个数为偶数,则去中间两个数的平均值;为奇数则取中间的数)。对这个问题的解决,最简单的做法就是把两个数组合并后排序,但这样的时间复杂度较高,所以不采用!我们可以在不对其进行排序的状态下找到中位数,首先将问题转化为这两个数组合并后从小到大排,求第k个数等于多少? 到时候要求中位数时,只需令 K = (m+n)/2即可,m,n分别为两个数组的元素个数。求第k个数的基本思路是:...
2021-08-03 10:06:10 103
原创 手写js中的call和apply
目 录bind、call和apply的区别与联系手写一个call手写一个apply(与call基本类似)bind、call和apply的区别与联系1、联系:①. 作用上:它们三个都可以绑定this指向,因为函数内部的this由运行的方式决定,this的指向常常会发生变化,这是就会产生绑定的需要。②. 使用上,三个函数的第一个参数都是this将要指向的对象,它们后面的参数(即除第一个参数外的其他参数位置)可以用来放被调用函数的参数2、区别:bind 是返回对应函数,便于稍后调用;apply 、ca
2021-08-02 20:30:47 364
原创 LeetCode刷题总结(一)1-3
算法中最主要的是要考虑时间复杂度,在时间低的情况下,再去考虑空间复杂度(1)LeetCode1:两数之和方法一:两层循环,依次遍历,暴力获取和为target的索引值方法二:先对整数数组进行排序,然后通过双指针的方式...
2021-07-22 18:16:53 45
原创 读阮一峰的this原理(javaScript)
一、问题的由来为什么同一个函数运行时,结果不一样?obj.foo()在obj环境执行,foo()在全局环境中执行,解释原理,理解this的作用var f = function() { // 上下文环境如何, this如何 console.log(this.x);}//小优化技巧:如果key和value一样时,则可以省略属性名var obj = { f, // f: f,允许在函数体内部,引用当前环境的其他变量 x:2}var x = 1; // wind
2021-07-12 16:55:50 478
原创 JavaScript语言精粹-对象篇
目 录引言对象是什么引用文章引言 我们已经了解到JS中5种基本数据类型,分别是:Number数字,String字符串,boolean布尔值,Null空值和Undefined未定义,除此之外,还有一种复杂数据类型,对象!先给一个结论,只要不是以上五种数据类型的,就一定属于对象类型Object,如数组,函数,正则表达式。那么,我们可不可以说基本数据类型也都是对象呢,因为它们可以“调用”方法啊(当然,undefined和null除外)? 当然不行! 实际上,这里的机制是存在Wrapper Objects
2021-07-12 09:56:45 151
原创 JavaScript学习笔记(一)
JavaScript学习笔记(一)1、javaScript发展历史中有意义的信息: 为了与微软竞争,网景公司将JavaScript开源,交给欧洲一个代码管理组织,并形成了现在通用的ECMAScript标准,简称: ES !(ES只是一个标准,而不是具体实现) 具体实现是由各大浏览器厂商实现的,不同浏览器实现了不同的JavaScript引擎,其中,比较著名的就是谷歌Chrome的V8弓|擎。 总的来说,JavaScript共包括三个部分,其中有ECMAScript,DOM,BOM。内容
2021-07-06 22:38:38 115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人