JavaScript
Simple_IDE
这个作者很懒,什么都没留下…
展开
-
vue中的装饰器
Vue Property Decoratornpm i -S vue-property-decoratorUsageThere are several decorators and 1 function (Mixin):@Prop@PropSync@Model@ModelSync@Watch@Provide@Inject@ProvideReactive@InjectReactive@Emit@Ref@VModel@Component (provided by vue-cl原创 2021-06-15 20:21:25 · 561 阅读 · 0 评论 -
js中!(感叹号)的使用
export default class YourComponent extends Vue { @Prop(Number) readonly propA: number | undefined @Prop({ default: 'default value' }) readonly propB!: string @Prop([String, Boolean]) readonly propC: string | boolean | undefined}这个感叹号在这里是强制propB为st原创 2021-06-15 19:47:59 · 2155 阅读 · 0 评论 -
位运算的使用
~‘1.345’.indexOf(’.’)这是一个位运算,效果等同于xxx.indeOf(‘oooo’)!=== -1 ;位运算效率会高一些,而且写起来简单原创 2021-06-15 18:22:59 · 104 阅读 · 0 评论 -
JS中对decimal类型数据的处理(高精度计算)
JS中对decimal类型数据的处理(高精度计算)原创 2021-06-15 17:50:21 · 755 阅读 · 0 评论 -
ES6装饰器
1.类的装饰@testableclass MyTestableClass { // ...}function testable(target) { target.isTestable = true;}MyTestableClass.isTestable // true上面代码中,@testable就是一个装饰器。它修改了MyTestableClass这个类的行为,为它加上了静态属性isTestable。testable函数的参数target是MyTestableClass类本身。原创 2021-06-11 10:30:37 · 292 阅读 · 2 评论 -
FileSaver
todo原创 2021-05-19 15:07:48 · 105 阅读 · 0 评论 -
ES6中的小括号
ES6中的小括号自带返回值,可以不用returnES6中的大括号不带返回值,必须要写return原创 2021-01-15 10:35:30 · 562 阅读 · 1 评论 -
npm install 和npm init的作用
npm init生成package.json文件,里面有各种依赖包的信息npm install安装package.json文件中的依赖包到并且生成node_modules文件夹原创 2021-01-09 10:11:04 · 4231 阅读 · 0 评论 -
JS经典面试题
function bigNumberAdd(n1,n2){ let result=""; let sn1=n1.split(""); let sn2=n2.split(""); let carry=false; while(sn1.length||sn2.left||carry) { // 每次将最后的数字进行相加,使用~~的好处是,即使返回值为 undefined 也能转换为 0 carry+=~~sn1.pop()+~~sn2.pop(); // 取加法结果的个位加入最终结果原创 2020-12-10 21:55:27 · 120 阅读 · 0 评论 -
动态规划
动态规划爬楼梯问题有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法?递归方法分析由分析可知,假设我们只差最后一步就能走上第10级阶梯,这个时候一共有两种情况,因为每一步只允许走1级或2级阶梯,因此分别为从8级阶梯和从9九级阶梯走上去的情况。因此从0到10级阶梯的走法数量就等于从0到9级阶梯的走法数量加上从0到8级阶梯的走法数量。依次类推,我们可以得到一个递归关系,递归结束的标志为从0到1级阶梯的走法数量和从0到2级阶梯的走法数量。代原创 2020-12-10 19:36:41 · 157 阅读 · 0 评论 -
反转链表
function reverseList(head){ /** 需要将一个单向链表反转。思路很简单,使用三个变量分别表示当前节点和当前节点的前后节点,虽然这题很简单,但是却是一道面试常考题。思路是从头节点往后遍历,先获取下一个节点,然后将当前节点的 next 设置为前一个节点,然后再继续循环。 */ if(head===null) return let pre=null; let current=head; let next; while(current) { next=原创 2020-12-10 14:37:05 · 73 阅读 · 0 评论 -
哈夫曼树
路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1 。图 1 中从根结点到结点 c 的路径长度为 3。结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。例如,图 1 中结点 a 的权为 7,结点 b 的权为 5。结点的带权路径长度:指的是从根结点到该结点之间的路径长度原创 2020-12-10 14:30:31 · 967 阅读 · 0 评论 -
红黑树
红黑树原创 2020-12-10 14:12:18 · 58 阅读 · 0 评论 -
js实现平衡二叉树
平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉排序树:它的左子树和右子树的深度之差(平衡因子)的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树平衡二叉树必须是二叉搜索树var Node=function(key){ this.key=key; this.lchild=null; this.rchild=null; this.height=1;//平衡因子}var root = null;//根节点getRoot=function(){return r.原创 2020-12-10 13:39:06 · 429 阅读 · 0 评论 -
二叉树
满二叉树如果二叉树中除了叶子节点,每个节点的度都为2则该二叉树为满二叉树满二叉树不存在度为1的节点完全二叉树如果二叉树中除去最后一层节点(叶子节点)为满二叉树切最后一层节点从左到右分布(中间不能有空)则这个二叉树交左完全二叉树JS创建二叉树function BinaryTree(){ var Node=function(key) { this.key=key; this.lchild=null; this.rchild=null; }var ro.原创 2020-12-10 12:09:25 · 122 阅读 · 0 评论 -
二分查找
function binarySearch(item,arr){ let low=0; let high=arr.length-1; let mid; while(low<=high) { mid=Math.floor((low+high)/2) if(item==arr[mid]) return mid else if(arr[mid]>item) high=mid-1 else low=mid+1 } return "null" }原创 2020-12-09 19:20:42 · 60 阅读 · 0 评论 -
二分查找
function binarySearch(item,arr){ let low=0; let high=arr.length-1; let mid; while(low<=high) { mid=Math.floor((low+high)/2) if(item==arr[mid]) return mid else if(arr[mid]>item) high=mid-1 else low=mid+1 } return "null" }原创 2020-12-09 19:11:46 · 66 阅读 · 0 评论 -
十大经典排序算法
//冒泡排序function bubbleSort(arr){ var length=arr.length; var temp; for(var i=0;i<length-1;i++) { for(var j=0;j<length-1-i;j++) { if (arr[j] > arr[j+1]) { // 相邻元素两两对比 temp = arr[j+1]; // 元素交换原创 2020-12-09 15:58:00 · 74 阅读 · 0 评论 -
export default 和 export 的使用方式
export default 和 export 的使用方式原创 2020-12-09 10:03:45 · 104 阅读 · 0 评论 -
CORS实现跨域
服务端实现//引入expressconst express=require('express');//创建应用对象const app=express();const jsonData={ "name":"simple"}///创建路由规则app.get('/server',(request,response)=>{ //设置响应头,设置允许跨域 ->允许所有源 response.setHeader('Access-Control-Allow-Origin原创 2020-11-26 12:33:11 · 88 阅读 · 0 评论 -
jsonp实现跨域
HTML有些默认得标签是支持跨域的如script img等标签所以可以通过以上标签实现跨域服务端代码//引入expressconst express=require('express');//创建应用对象const app=express();app.all('/jsonp-server',(request,response)=>{ //jsonp实现跨域 const data={"name":"simple"}; let str=JSON.stringify(d原创 2020-11-25 22:47:14 · 118 阅读 · 0 评论 -
用node做服务端,前端用Ajax获取服务端数据
1.首先要让node做服务端需要在项目中用express包npm i express --save然后建立一个server.js文件//引入expressconst express=require('express');//创建应用对象const app=express();///创建路由规则app.get('/server',(request,response)=>{ //设置响应头,设置允许跨域 response.setHeader('Access-Control原创 2020-11-25 19:57:51 · 343 阅读 · 0 评论 -
Ajax
通过JavaScript的异步通信,从服务器获取XML文档中提取数据,再更新当前网页的对应部分,而不用刷新整个网页创建XMLHttpRequest对象创建一个HTTP请求设置响应HTTP请求状态变化的处理函数发送HTTP请求获取请求到的数据// promise 封装实现:function getJSON(url) { // 创建一个 promise 对象 let promise = new Promise(function(resolve, reject) { let原创 2020-11-25 13:44:54 · 82 阅读 · 0 评论 -
JavaScript模拟实现一个new
在实现new操作符之前,我们需要知道new都干了些什么比如var fn=function(){};var fnObj=new fn();1.创建了一个新对象var obj=new Object()2.设置原型链obj.__proto__=constructor.prototype//这里的constructor就是fn3.让constructor的this指向obj,并执行constructor的函数体var result=constructor.call(obj)4.判断返原创 2020-11-25 12:12:12 · 122 阅读 · 0 评论 -
手写instanceof
function myinstanceof(left,right){ //let proto=Object.getPrototypeOf(left),//获取左边对象的原型 let proto=left.__proto__//与上面的语句等价 myprototype=right.prototype//获取右边构造函数的prototype对象 while(true) { if(!proto) return false if(proto===myprototype) return tr原创 2020-11-25 11:49:57 · 158 阅读 · 2 评论 -
判断一个对象是否属于某一类
JavaScript中检测对象的类型的运算符有:typeof,instanceof,constructortypeof:typeof是一个一元运算符,经常用来检测一个变量是不是最基本的数据类型,返回结果是一个说明运算数类型的字符串。如:“number”,“string”,“boolean”,“object”,“function”,“undefined”(可用于判断变量是否存在)。但 typeof的能力有限,其对于Date、RegExp、Array类型返回的都是"object"。所以它只在区别对象和原原创 2020-11-25 11:35:09 · 2416 阅读 · 0 评论 -
JavaScript事件模型
JavaScript事件模型原创 2020-11-25 11:15:25 · 55 阅读 · 0 评论 -
JavaScript中的this
情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window。function a(){ console.log(this)}a()//window情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。var obj={ a:12, fn:function(){console.log(this)}}obj.fn()//obj情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函原创 2020-11-25 10:50:44 · 178 阅读 · 0 评论 -
JavaScript实现继承的几种方式
1.原型链继承->将父类的实例作为子类的原型父类function Animal(name){ this.name=name||"simple"; this.sleep=function() { console.log(this.name + '正在睡觉!'); }}//原型方法Animal.prototype.eat=function(food){console.log(this.name+"eat"+food)}//原型链继承function Cat(){原创 2020-11-24 21:59:53 · 297 阅读 · 0 评论 -
JavaScript创建对象的几种方式
(1)var obj={} obj.name=”simple” obj.age=18(2)var obj=new Object()(3)var obj={name:”simple”,age:18}前面这三种方式存在两个个问题就是对象中的方法不能共享、每个方法都是独立的。而是代码冗余(4) 使用工厂模式创建对象->用函数创建一个对象function createObject(name){ var obj=new Object(); obj.name=name; obj.sa原创 2020-11-24 21:17:15 · 179 阅读 · 0 评论 -
JavaScript数组随机排序
1.随机从原数组抽取一个元素,加入到新数组function randomSort(arr) { var result = []; while (arr.length > 0) { var randomIndex = Math.floor(Math.random() * arr.length); result.push(arr[randomIndex]); arr.splice(randomIndex, 1); } return result;}2.随原创 2020-11-24 20:30:57 · 141 阅读 · 0 评论 -
mockjs学习
1.首先在项目中安装mockjs一般的还会在项目中安装json5.解决son文件不能加注释的问题npm install mockjs --save-devnpm install json5 --save-dev2.在项目中使用mockjs//引入mockjs模块const Mock=require('mockjs')let obj=Mock.mock({ id:'@id', username:'@cname()',//随机生成一个中文名字 date:'@date()'原创 2020-11-22 13:06:32 · 132 阅读 · 0 评论 -
网络请求给B站视频点赞
const requestParam=`aid=${__INITIAL_STATE__.aid}&like=1&csrf=${getCookie('bili_jct')}`const request=new XMLHttpRequest()request.open('POST','https://api.bilibili.com/x/web-interface/archive/like',true)request.withCredentials=truerequest.setRequ原创 2020-11-17 15:24:40 · 493 阅读 · 0 评论 -
跨域及其解决方式
最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同"。协议相同 域名相同 端口相同举例来说,http://www.example.com/dir/page.html这个网址,协议是http://,域名是www.example.com,端口是80(默认端口可以省略)。它的同源情况如下。http://www.example.com/dir2/other.html:同源http://example.com/dir/other.html转载 2020-11-14 09:58:13 · 130 阅读 · 0 评论 -
arguments.callee
添加链接描述原创 2020-11-11 15:10:33 · 73 阅读 · 0 评论 -
函数柯里化
添加链接描述原创 2020-11-11 15:05:42 · 55 阅读 · 0 评论 -
JavaScript闭包
添加链接描述原创 2020-11-11 15:05:10 · 56 阅读 · 0 评论 -
token的理解
token的理解原创 2020-10-27 18:33:46 · 295 阅读 · 0 评论 -
WeakSet和WeakMap
引用原创 2020-10-24 19:01:53 · 60 阅读 · 0 评论 -
JavaScript数组去重
SetES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。// 例一const set = new Set([1, 2, 3, 4, 4]);[...set]// [1, 2, 3, 4]// 例二const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);items.size // 5// 例三function divs () { return [.原创 2020-10-24 10:09:50 · 70 阅读 · 0 评论