![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
原生Javascript手写代码
文章平均质量分 50
野生松
笨鸟要用力飞
展开
-
简单实现Jsonp封装
原理:script标签不受同源政策限制,动态创建script标签,定义Callback函数,实现Get请求const jsonp = ({ url, params, callbackName }) => { const generateURL = () => { let dataStr = ''; for(let key in params) { dataStr += `${key}=${params[key]}&`; } dataS原创 2021-02-28 19:36:04 · 127 阅读 · 0 评论 -
【JavaScript 原生实现】-- New
New:创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。以下是源码实现:// 测试:function Foo(name) { this.name = name}const newObj = myNew(Foo, '你好')console.log(newObj) // Foo {name: "你好"}console.log(newObj instanceof Foo) // truefunction myNew(fn,原创 2020-11-02 21:38:57 · 358 阅读 · 1 评论 -
【JavaScript 原生实现】-- Bind
Bind:bind() 方法会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数。(来自于 MDN )接下来例子结合源码来分析://测试var value = 2;var foo = { value: 1};function bar(name, age) { this.habit = 'shopping'; console.log(this.value);原创 2020-10-29 21:27:13 · 208 阅读 · 0 评论 -
原生JavaScript实现 instanceof
原理很简单,就是沿着原型链往上查找function myInstanceof(target, obj){ if(typeof target !== "object" || target === null) return false; // 往上找target的原型 let proto = target.__proto__ // let proto = Object.getPrototypeOf(target); while(true){ //查找到尽头,还没找到原创 2020-10-25 16:11:20 · 183 阅读 · 0 评论 -
Promise串行执行
面试的时候碰到的题目:将promise数组,循环输出执行。哎,当时不会做。菜的真实!// 题目const item = new Promise((resolve, reject) => { setTimeout(() => { console.log('1') resolve() },500)})var arr=[item,item,item...原创 2020-03-02 20:03:25 · 280 阅读 · 0 评论 -
JavaScript数组合并以及对象合并
数组合并:let a = [1,2];let b = [5,6];// 方法一:a.concat(b);// 方法二:a.forEach(item => b.push(item))// 方法三:[...a,...b]// 方法四:a.push.apply(a,b);console.log(a)对象合并:let a = {key: 1};let b = {str: 66};// 方法一:{...a,...b}// 方法二:Object.assig原创 2020-06-02 20:27:28 · 136 阅读 · 0 评论 -
Promise实现红绿灯交替重复亮
红灯3秒亮一次,黄灯2秒亮一次,绿灯1秒亮一次;如何让三个灯不断交替重复亮灯?(用Promise实现)三个亮灯函数已经存在:function red() { console.log("red");}function green() { console.log("green");}function yellow() { console.log("yellow");}const light = function (timer, cb) { return new Promise(原创 2020-05-21 21:05:32 · 2698 阅读 · 2 评论 -
JavaScript去重
Array.from(new Set(arr))或[...new Set(arr)]:var arr = [1,1,2,5,6,3,5,5,6,8,9,8];console.log(Array.from(new Set(arr)))// console.log([...new Set(arr)])for循环嵌套,利用splice去重:function unique (origin) { let arr = [].concat(origin); for (let i = 0; i原创 2020-05-14 21:13:54 · 480 阅读 · 0 评论 -
【Jvascript 算法】-- JavaScript实现对树结构数据的增删以及树型数据与数组的相互转换
在日常开发中我们经常会碰到树结构数据,以下是我的笔记:let arr =[ {id:2,name:'部门B',parentId:0}, {id:3,name:'部门C',parentId:1}, {id:1,name:'部门A',parentId:2}, {id:4,name:'部门D',parentId:1}, {id:5,name:'部门E',pa...原创 2020-04-28 16:43:47 · 727 阅读 · 1 评论 -
JavaScript实现冒泡排序、选择排序
JavaScript实现冒泡排序、选择排序 function bubbleSort(arr){ let temp , len = arr.length; for(let i = 0 ; i < len ; i++){ for(let j = 0; j < len-i-1 ; j++){ if(arr[j+1] < arr[j...原创 2018-12-14 11:06:28 · 247 阅读 · 0 评论 -
JavaScript实现对象全相等判断
话不多说直接上代码:function isObject(obj){ // 是否是对象判断 return typeof obj === 'object'}function isEqual(obj1, obj2){ if(!isObject(obj1) || !isObject(obj2)){ // 首先进行是否是对象的判断 return obj1 === ob...原创 2020-03-04 20:51:20 · 313 阅读 · 0 评论 -
原生Javascript实现防抖与节流
其实防抖和节流这些标记的实现主要都是通过闭包来实现的一、防抖任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行。如果n秒内高频事件再次被触发,则重新计算时间。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta nam...原创 2019-05-10 17:34:22 · 1075 阅读 · 0 评论 -
原生Javascript实现New方法
一、Newnew 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。我就直接上代码,加注释:function Person (name, age) { this.name = name; this.age = age; this.habit = 'Games';}Person.prototype.strength = 60;P...原创 2020-02-09 21:24:26 · 304 阅读 · 0 评论