前端
qq_27449993
天理难容
展开
-
typeof null返回值为什么是object?
是第一版本的JavaScript的问题,使用32位表示一个变量,其中前3位代表值的类型,000 表示对象,010 表示浮点数,100 表示字符串,110 表示布尔值,和其他的值都被认为是指针。,在这种情况下null被解释为000的指针,即被认为是一个空对象引用,因此typeof null的结果为object,属于历史遗留问题。原创 2024-09-06 10:25:22 · 182 阅读 · 0 评论 -
每周算法题---逆波兰表示法,求该后缀表达式的计算结果
采用栈结构,如果不是运算符就入栈,如果是运算符就弹出栈中前两个值进行运算,需要注意用出栈的顺序,除法是除数在前,eval方法用()包起来,最后运算结果也要入栈。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。有效的算符包括 +、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。根据 逆波兰表示法,求该后缀表达式的计算结果。整数除法只保留整数部分。原创 2023-02-08 10:10:37 · 468 阅读 · 1 评论 -
new vue 主要干了啥?
Vue 初始化主要就干了几件事情,合并配置,初始化生命周期,初始化事件中心,初始化渲染,初始化 data、props、computed、watcher 等等。初始化的最后,检测到如果有 el 属性,则调用 vm.$mount 方法挂载 vm ,挂载的目标 就是把模板渲染成最终的 DOM,那么接下来我们来分析 Vue 的挂载过程Vue 不能挂载在 body 、 html 这样的根节点上。接下来的是很关键的 逻辑 —— 如果没有定义 render 方法,则会把 el 或者 tem.原创 2023-02-03 09:44:10 · 2148 阅读 · 0 评论 -
vue兼容ie9-11
vue项目兼容ie,采用core-js的方式,安装core-js:3.0以上版本采用vue-cli脚手架,vue-cli3.0开始默认会安装core-js3.0的版本原创 2022-12-07 11:20:05 · 1867 阅读 · 2 评论 -
css3画.5个像素的边框
css border实现,单边.5个像素,整个.5个像素原创 2022-10-17 10:59:34 · 919 阅读 · 0 评论 -
vite配置 vue3中怎么使用svg图标
vite vue3中怎么使用svg图标svg图片在项目中使用的非常广泛,如何在vue3 + vite 中使用svg图标。vite-plugin-svg-icons预加载在项目运行时就生成所有图标,只需操作一次 dom高性能内置缓存,仅当文件被修改时才会重新生成原创 2022-10-09 10:15:45 · 1282 阅读 · 0 评论 -
js时间格式化
js时间格式化原创 2022-09-23 10:30:37 · 137 阅读 · 0 评论 -
rollup打包项目
选择rollup打包纯js插件。rollup只是把我们的代码转成目标js并没有其他的像webpack的可以打包图片等 新建项目文件 通过cmd进入文件,使用npm初始化项目 npm init -y 3. 安装包我们需要安装,rollup来打包我们的插件,我们在编写js插件的时候会需要用到es6语法,我们还需要安装将es6转成es5的babel, 所以需要安装,@babel/core,@babel/preset-env我们还需要安装插件rollup...原创 2022-05-17 16:24:19 · 1014 阅读 · 0 评论 -
instanceof原理
left instanceof right 是通过检测 right的prototype属性是否在left的原型链上function myInstanceof(left, right) { // 这里先用typeof来判断基础数据类型,如果是,直接返回false if(typeof left !== 'object' || left === null) return false; // getProtypeOf是Object对象自带的API,能够拿到参数的原型对象...原创 2022-02-21 10:16:05 · 548 阅读 · 0 评论 -
js new的时候干了些啥?
创建一个空的简单JavaScript对象(即{}) 链接该对象(即设置该对象的构造函数)到另一个对象 将步骤1新创建的对象作为this的上下文 如果该函数没有返回对象,则返回this模仿newlet that = this function CutOb () { this.date = that.getNowDate() } let cutOb = new CutOb() function createObject (fn) { let原创 2022-02-18 14:39:50 · 381 阅读 · 0 评论 -
有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false示例5:输入:s = "{[]}"输出:true提示:1 &l...原创 2022-02-07 14:39:12 · 288 阅读 · 0 评论 -
js原型链
原创 2021-10-11 15:00:00 · 83 阅读 · 0 评论 -
js组合继承
原型链继承: //原型对象上的任何类型的值,都不会被实例所重写/覆盖, //在实例上设置语原型对象上同名属性的值,只会在实例上创建一个同名的本地属性 //但是是引用类型的就会修改//原型链继承 function Person(name){ this.name='dfdf' } Person.setName=function(name){ this.name=name } Person...原创 2021-01-21 14:50:10 · 230 阅读 · 1 评论 -
js继承-原型链继承
构造函数、原型与实例之间的关系每创建一个函数,该函数就会自动带有一个prototype属性。该属性是个指针,指向了一个对象,我们称之为原型对象。什么是指针?指针就好比学生的学号,原型对象则是那个学生。我们通过学号找到唯一的那个学生。假设突然,指针设置 null, 学号重置空了,不要慌,对象还存在,学生也没消失。只是不好找了。 原型对象上默认有一个属性constructor,该属性也是一个指针,指向其相关联的构造函数。 通过调用构造函数产生的实例,都有一个内部属性,指向了原型对象。所以...转载 2021-01-20 16:08:13 · 162 阅读 · 0 评论 -
js防抖节流
//防抖this.debounce((ff)=>{ console.log('ff'+ff) setInterval(()=>{//节流 this.throttle((kk)=>{ console.log(kk) },500)(44) },900) },200)(3)debounce(fn,delay){ var timer=null var that=this return ..原创 2021-01-20 09:50:39 · 105 阅读 · 0 评论 -
uniapp分包路由跳转
分包之后还需要跳转到主包里的话,路由跳转:把url提出来就可以,如果不把url提出来就不行。是不是很魔性原创 2021-01-14 16:20:30 · 6596 阅读 · 0 评论 -
elementUI 样式修改
1,通过全局样式新建common.css,并在main.js中引入import "./assets/style/common.css";可以用来修改项目整体颜色风格2单个组件<style></style>中不要加scope,修改第三方样式的不加,自己的样式加<style></style><style scoped></style>3:deep将废弃:/deep/深度修改标签样式找到需要修改的 Eleme.原创 2021-01-13 15:27:26 · 746 阅读 · 0 评论 -
uni-app 更改 checkbox的样式
不能再除app.vue外的.vue写样式,很可能无效,再app.vue里面也不能写scope.datiMain uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked{ border-color:#404E9F; color: #DA4A37 !important; } .datiMain uni-checkbox .uni-checkbox-input { border-color: #404E9F; }原创 2021-01-05 14:38:39 · 1976 阅读 · 0 评论 -
elementUI-表单验证踩坑记录
简单表单验证::model必须是对象,否则报错。 <el-form-item prop="shareTitle">中的prop必须和<el-input>这个的v-model一致否则不能验证。 <el-form :model="jcData" ref="activeInfo" :rules="rules"> <el-form-item prop="shareTitle"> <el-input原创 2020-12-12 17:10:42 · 416 阅读 · 0 评论 -
vue $broadcast
父组件 broadcast(componentName, eventName, params) { broadcast.call(this, componentName, eventName, params); }function broadcast(componentName, eventName, params) { this.$children.forEach(child => { var name = child.$options.compo..原创 2020-11-12 20:14:09 · 544 阅读 · 0 评论 -
Vue CLI搭建vue3.0项目
查看vue版本全局安装过旧版本的vue-cli(1.x 或 2.x)要先卸载它,否则跳过此步:1 npm uninstall vue-cli -g //或者 yarn global remove vue-cli然后在重新安装vue-cli再查看vue的版本创建项目vue create <Project Name>//文件名 不支持驼峰(含大写字母)vue create appvue3? Check the features needed for ...原创 2020-10-10 15:16:26 · 1182 阅读 · 0 评论 -
react父子组件通信
父组件通过props向子组件传值,子组件通过再constructor中props中获取父组件的值,如果子组件要修改父组件的值,再子组件中通过this.state={pops.list}来存下父组件的值,再通过this.setSate({})来修改state,如果需要再把值传给父组件,则通过,方法来实现:在父组件调用子组件的时候,通过prop将方法传给子组件,子组件通过调用父组件的方法来向父组件传值...原创 2020-08-07 17:11:49 · 179 阅读 · 0 评论 -
canvas生成图片toDataUrl报错
在使用canvas的toDataURL()方法时,控制台有时会报错原因:这是由于之前由drawImage()向canvas导入的图片跨域而导致的。解决办法1、在引用图片之前打开跨域资源允许权限(一定要注意顺序):var myImage = new Image(); myImage.setAttribute("crossOrigin", 'Anonymous'); //解决图片跨域问题 myImage.src = imgUrl2; //背景图片 你自己本地的图片或者在线图片原创 2020-08-04 15:57:55 · 558 阅读 · 0 评论 -
redux持久化存储方案
对于Redux来讲,我们都很熟悉了,是著名的 React 全家桶的一份子。但是在使用 Redux 时有个痛点:就是其 store 状态树的state并不是持久保存的,在浏览器端刷新一下数据就全没有了,得重新从后台读取。这时候,redux-persist 就显示出它的用武之地了。我们知道,本地数据库或者像 localstorage 之类的缓存系统才有可能长时间保存数据,而 redux-persist 可以让你的数据从 state 分离出来,保存到浏览器缓存中,以便实现数据的持久化缓存。既然如此,那么我原创 2020-07-23 10:18:54 · 2293 阅读 · 0 评论 -
vue 路由鉴权
用于进入某些页面需要什么什么特权才能进入判断当前路由是否需要鉴权(router中meta字段下requireAuth是否为true)这里我先讲讲我们项目中用到的路由鉴权方式,这里我们主要用到我们Vue Router中的router.beforeEach, 这个函数的作用就是注册一个全局前置守卫当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于 等待中。每个守卫方法接收三个参数: to: Route: 即将要进入的目标原创 2020-07-22 10:23:51 · 2766 阅读 · 0 评论 -
react componentWillReceiveProps
import React, { Component} from 'react'//当组件执行完componentDidMount函数后,就进入了class ParentBy extends Component { constructor() { super() this.state = { count: 4, } } setSave(){ this.setState({ ...原创 2020-07-15 12:32:11 · 23948 阅读 · 0 评论 -
react绑定click事件
class Count extends Component{ constructor(){ super() // this.state={ num:2 } } setSave(){ this.setState({ num:this.state.num+1}) } render(){ return( &.原创 2020-07-15 11:11:18 · 478 阅读 · 0 评论 -
canva重复图案
canvas的createPattern()可以用于绘制重复图案,它可以接收image元素、canvas元素或video元素作为图案参数,并且可以传入如何重复图案的字符串参数:repeat——为整个区域绘制重复图案repeat-x——只在x方向绘制重复图案repeat-y——只在y方向绘制重复图案no-repeat——不重复,只绘制一张图案 var can = document.createElement('canvas...原创 2020-07-09 15:48:11 · 442 阅读 · 0 评论 -
canvas定位点击位置
myCanvas.removeEventListener('touchstart',_bindTouchStart.bind(this),false) myCanvas.removeEventListener('touchend',_bindTouchEnd.bind(this),false) myCanvas.removeEventListener('touchstart',_bindTouchMove.b..原创 2020-07-08 15:31:39 · 1483 阅读 · 0 评论 -
react render jsx
使用 ReactDOM 把元素渲染到页面指定的容器中:``` // ReactDOM.render('要渲染的虚拟DOM元素', '要渲染到页面上的哪个位置中') // 注意: ReactDOM.render() 方法的第二个参数,和vue不一样,不接受 "#app" 这样的字符串,而是需要传递一个 原生的 DOM 对象 ReactDOM.render(myDiv, document.getElementById('app'))```## JSX语法1. 如要要使用 JS.原创 2020-07-06 16:22:08 · 236 阅读 · 0 评论 -
react学习01
// JS打包入口文件// 1. 在 React 中,需要安装 两个包 react react-dom// 1.1 react 这个包,是专门用来创建React组件、组件生命周期等这些东西的;// 1.2 react-dom 里面主要封装了和 DOM 操作相关的包,比如,要把 组件渲染到页面上import React from 'react'import ReactDOM from 'react-dom'// 2. 在 react 中,如要要创建 DOM 元素了,只能使用 React 提.原创 2020-07-06 15:55:59 · 1763 阅读 · 0 评论 -
react已有项目中部署typescript
1. npm install --save @types/react @types/react-dom主要是为了获取react和react-dom的声明文件,因为并不是所有的库都有TypeScript的声明文件,所以通过运行2、npm i --save @types/typescript3npm install --save-dev typescript awesome-typescript-loader source-map-loader这一步,我们安装了..原创 2020-07-06 14:17:13 · 1090 阅读 · 0 评论 -
canvas游戏开发平手速反思
效果图在这个项目中,首先先将需要用到的图片全部加载出来,用于活动动画,参考canvas优化优化:应该尝试分离思想,这个分成一个canvas这个分成一个canvas而不是所有的再一个canvas中,还有对于游戏图片的处理,不应该再游戏之前将全部图片加载出来,应该在不同层将各自的层的图片全部加载出来。...原创 2020-07-23 10:27:27 · 117 阅读 · 0 评论 -
canvas动画requestNextAnimationFrame兼容性写法
,采用window.requestAnimationFrame()实现动画效果。这个方法提供了更加平缓并更加有效率的方式来执行动画,当系统准备好了重绘条件的时候,才调用绘制动画帧。一般每秒钟回调函数执行60次,也有可能会被降低。想要了解更多关于动画循环的信息,尤其是游戏,// #FFEAAAwindow.requestNextAnimationFrame = (function() { var originalWebkitRequestAnimationFrame = undefined, ..原创 2020-07-03 10:00:34 · 2841 阅读 · 0 评论 -
贝塞尔曲线
连接:贝塞尔曲线控制点确定的方法https://wenku.baidu.com/view/c790f8d46bec0975f565e211.html原创 2020-05-27 14:32:45 · 259 阅读 · 0 评论 -
js之链式调用原理解剖
因为所有对象都会继承原型对象的属性和方法,所以可以让定义的原型对象中的那几个方法都返回用以调用方法的实例对象的引用即return this(function(){var $=function(){}$.prototype={init:function(){......return this}}}())...原创 2020-05-09 17:52:07 · 270 阅读 · 0 评论 -
js new关键字做了什么
在使用new运算符的时候,系统会为你做一些事,首先:他会先创建一个空对象,然后调用这个构造函数,在此过程中空对象处于作用域链的最前端(作用域链的前端就是当前代码执行所在环境对应的变量对象即空对象) function Person(name , age){ this.name = name; this.age = age; cons...原创 2020-05-07 10:39:44 · 1925 阅读 · 0 评论 -
textarea placeholder输入的时候不显示的问题
方式1:css解决textarea:focus::-webkit-input-placeholder { color: transparent; }textarea:focus::-moz-placeholder{ color: transparent; }textarea:focus:-moz-placeholder{ color: transparent; }input:f...原创 2020-04-24 09:44:32 · 538 阅读 · 0 评论 -
解决classList的兼容问题(ie9及以下)
if (!("classList" in document.documentElement)) { Object.defineProperty(HTMLElement.prototype, 'classList', { get: function() { var self = this; function update(fn...原创 2020-04-16 15:24:43 · 900 阅读 · 0 评论 -
js参元类(重用代码)
如果想要一个函数用到多个类中,可以使用扩充的方式让这些类共享该函数。做法:先创建一个包含各种通用方法的类,然后在用它扩充其他类。这种包含通用方法的类称为参元类。他们通常不会被实例化,或直接调用,其存在的主要的母目的主要只是向其他类提供自己的方法// 参元类var Mixin=function(){}Mixin.prototype={ commonFun:function(){ ...原创 2020-04-14 13:45:06 · 175 阅读 · 0 评论