
js
一支海棠
这个作者很懒,什么都没留下…
展开
-
javascript一个函数生成唯一id
获取 随机的idfunction getUid() {function S4() {return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);}return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());}(1 + Math.random()) ----> 1 ~ 20x10000原创 2022-01-10 16:33:43 · 635 阅读 · 0 评论 -
06JS面向对象
JS面向对象JS 中的对象对象描述符 可以对这个对象做一些控制var obj = { name:'why', age:18}// 数据属性描述符// 用了属性描述符, 那么会有默认的特性Object.defineProperty(obj, "address", { // 很多配置 // value: "北京市", // 默认值undefined // 该特殊不可删除/也不可以重新定义属性描述符 // configurable: false, //原创 2021-12-25 22:06:01 · 700 阅读 · 0 评论 -
05_函数相关
JS 函数式编程纯函数的概念不对外部变量做任何 处理 这个函数执行的 时候不会产生任何的副作用根据 一定的输入 会永远有 相应的输出平时的 算法的 几乎都是纯函数纯函数 可以放心的使用 不会对其他变量造成污染 公用的方法 函数 最好是纯函数函数柯里化是把接收多个参数的函数,变成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数,而且返回结果的新函数的技术// 柯里化的 例子function add(x,y,z) { return x+y+z}func原创 2021-12-25 16:18:59 · 377 阅读 · 0 评论 -
04_this指向
thisthis 一般指当前调用的对象this 一般来说 指向调用他的那个对象 谁调用他 指向谁this 4种绑定规则1. 默认绑定对象调用内部函数 this 就是这个对象全局调用 浏览器中 是winodwnode 是一个 {}2. 隐式绑定function foo() { console.log(this) }foo()var obj1 = { foo: foo }var obj2 = { obj1: obj1 }obj1.foo() // fooobj2.obj1.f原创 2021-12-25 16:15:23 · 302 阅读 · 0 评论 -
02_内存管理闭包
JS 内存管理JS 会在定义变量时为我们分配内存基本数据类型直接在栈空间进行分配复杂数据类型在堆内存中开辟一块空间 将这块空间的指针返回值变量做引用垃圾回收 Garbage Collection (GC)引用计数 当有对象做引用时 就+1 当为0时--> 没有对象引用 回收 弊端: 循环引用标记清除 从根开始往上找 没有引用的对象 做清除闭包[scope]闭包又称 词法闭包 或函数闭包生成闭包的方式在此代码中 由于 函数嵌套函数 内部函数 对foo作用域中的原创 2021-12-25 15:34:02 · 338 阅读 · 0 评论 -
01javascript
以下来自对 coderwhy 老师 js高级课程的学习 以及自己的总结javascript运行原理浏览器工作原理静态资源 输入服务器地址 url 回车先查看浏览器缓存-系统缓存 若有则直接展示 or nextDNS 解析 获取相应的 ip 地址TCP连接 建立 三次握手发送HTTP请求服务器处理请求并返回HTTP报文浏览器收到HTTP 响应读取页面内容,浏览器渲染,解析html生成Dom树,解析css,样式,js交互客户端和服务器继续进行交互…浏览器内核javascri原创 2021-12-25 15:14:05 · 277 阅读 · 0 评论 -
javascript继承
原型链继承让子类的原型 指向父类的实例对象 实现对 父类原型上的方法的继承但是这个时候子类的构造函数也变为父类的实例 需要将其构造函数执行自己/*方式1: 原型链继承1. 方法 1. 定义父类型构造函数 2. 给父类型的原型添加方法 3. 定义子类型的构造函数 4. 创建父类型的对象赋值给子类型的原型 5. 将子类型原型的构造属性设置为子类型 6. 给子类型原型添加方法 7. 创建子类型的对象: 可以调用父类型的方法2. 关键 1原创 2021-08-29 16:02:45 · 104 阅读 · 0 评论 -
数据拼接 存在一对多关系
在 l push 对象的时候 是push的引用值 为了保证每一次 puhs的都是不同的对象 需要通过 JSON 做一个深拷贝这里我解决了 但是一直在蒙 在 push之前 打印 出来的 item数据 每个都是不相同的 其实就是深拷贝的问题最后使用 lodash 排序 输出结果(12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]0: {name: “1”, age: 18, message: “成年”}1: {na.原创 2021-08-27 09:33:00 · 155 阅读 · 0 评论 -
闭包与闭包面试题
什么是闭包 /* 1. 闭包 当一个嵌套的内部函数引用了嵌套的外部函数的变量时 2. 使用chrome调试查看 理解1 闭包是嵌套的内部函数 2 包含被引用变量(函数)的对象 3. 产生 函数嵌套 内部函数引用了外部函数的数据(变量/函数) */ function fn1() { var a =2 var b functi原创 2021-08-22 10:42:40 · 419 阅读 · 0 评论 -
作用域与作用域链
<!--1. 区别1 * 全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时 * 全局执行上下文环境是在全局作用域确定之后, js代码马上执行之前创建 * 函数执行上下文是在调用函数时, 函数体代码执行之前创建2. 区别2 * 作用域是静态的, 只要函数定义好了就一直存在, 且不会再变化 * 执行上下文是动态的, 调用函数时创建, 函数调用结束时就会自动释放3. 联系 * 执行上下文(对象)是从属于所在的作用域 * 全局.原创 2021-08-21 12:53:22 · 187 阅读 · 0 评论 -
执行上下文与执行上下文栈
变量提升与函数提升变量声明提升通过var定义的变量 在定义之前就可以访问到值 undefined函数声明提升通过function声明的函数 在之前就可直接调用值: 函数定义(对象) var a = 3 function fn(){ console.log(a); // a 变量提升 undefined var a =4 // } fn() console.log(b); var b =3 fn2()原创 2021-08-17 21:32:28 · 96 阅读 · 0 评论 -
js原型和原型链
百度找的一张图片 图片看懂了 真的很好理解原型/* 函数的prototype属性 每个函数都有一个prototype属性 它默认指向一个Object空对象(原型对象) 原型对象总有一个属性 constructor 指向函数对象 给原型对象添加属性(一般都是方法) 作用 函数的所有实例对象 自动拥有原型中的属性(方法) */ console.log(Date.prototype) function F() {原创 2021-08-15 11:28:08 · 93 阅读 · 0 评论 -
js操作dom节点实现分页(js原生)
js代码/** * * @param {*} currentPage 当前点击的页码 * @param {*} pagenum 总页码 * @param {*} selectorLength 中间显示多少个 * @param {*} domId 需要渲染的dom的Id */function createPageSelector(currentPage,pagenum,selectorLength,domId){ /*原创 2021-08-08 23:29:18 · 468 阅读 · 0 评论 -
javascript 基础
数据类型分类基本(值)类型String: 任意字符串Number: 任意数字boolean: true/falseundefined: undefinednull:null2.对象(引用) 类型Object 任意对象Function 一种特别的对象(可以执行)Array: 一种特别的对象(数值下标,内部数据有序)判断typeof 返回数据类型的字符串表达可以判断 undefined,number,string,boolean,function不能判断:null Objec原创 2021-08-08 21:57:38 · 88 阅读 · 0 评论 -
js面试题 转化首字母 查存字符串出现最多次数的字母
给定字符串 下滑后的字符转化为大写 //将一排字符串的首字母转换为大写 var str ='tom_jack_tony_big' var arr =str.split('_') var arr2 = arr.map((item)=>{ return item.replace(item[0],item[0].toUpperCase()) }) console.log(arr); console.log(arr2); //拼原创 2021-07-24 12:19:33 · 89 阅读 · 0 评论 -
js面试题 括号匹配
js括号匹配括号匹配算比较常见的算法题 主要思想就是先进后出实现思路 遇到左就放入数组 遇到右 就让最后进的左出如果符合匹配规则 就数组长度最终为0function testFn(str){ var fu1=0; var fu2=0; var fu3=0; var arr=[]; for(i=0;i<str.length;i++){ if(str.slice(i,i+1)=='(') arr.push("("); if(str.slice(i,i+1)=='{') ar原创 2021-07-24 11:31:52 · 287 阅读 · 0 评论 -
js面试题 给定数组 与目标值 求数组中任意数的和 等于目标值 的下标
js面试题 给定数组 与目标值 求数组中任意数的和 等于目标值 的下标题目描述 给定 随机数组 与目标值 进行匹配 任意数字和等于目标值 输入这些数字的下标分析任意数字组合 Cn1 +Cn2+…=2^n -1与位运算 比如 1101 就是取 第1第2第4个数 这样可以得到所有的组合类型代码的实现是 数组 和 值都实现了的function CalSum(array,result)/* 1 1 2 3 2+1 3 7 3+3+1 4原创 2021-07-24 11:26:15 · 929 阅读 · 2 评论