手撸call apply bind
如果自己去实现call apply bind,看上去挺复杂,写起来其实就几行代码因为call和apply一样,只是传参不一样,所以我就只写一个call 实现call(其实只有2行代码)1234567891011121314151617181920212223242526/* 随便定义一个对象,待会将函数内的this指向指向倒这个对象 */const obj = { name: "我是需要被绑定改变this指向的对象" };/* 需要改变this指向的函数,没有使用call时,this指向window */function fn(arg) { console.log("fn---------", this); console.log("fn---------", arg);}/* * * 重写call方法 * target 需要把this改变到哪个目标 * args 传递进来的参数 */Function.prototype.call = function (target, ...a ...
2023年有哪些良心的流量卡推荐?爆肝给大家整理好了最新的流量卡合集
不用再费力翻找了,良心的流量卡都在这里,还不知道如何申请?仅此一篇,拿走不谢。 本篇为流量卡测评+推荐+领取攻略文章(点赞+收藏我相信你一定会用的上) @小韩 长期搜寻全国各地运营商发布的优惠补贴流量卡。集合了河南、山东、海南、福建、宁夏、北京、广东、四川、湖北、湖南各地运营商推出的各款流量卡,目前还在持续挖掘中…… 运营商调整时期,相信很多友友都发现了近期想要去找优惠补贴手机流量卡,但是无论去哪里都找不到。为解决这个问题, 小韩 在此特别更新一篇还可领取的流量卡文章,给大家筛选出来可以盲入的流量卡系列。 开篇前先给大家讲点小知识。(坐下听课了)如果你仔细了解了这些流量卡之中的套路,那可以跳过以下避坑指南,直接进入正文部分。如果你是新手小白或者对流量卡只是略懂,建议最好看完这部分经验,最大程度保证你不会交流量卡方面的智商税~ 流量卡避坑指南选择流量卡之前一定要看清楚套餐详情,这是重中之重,套餐详情就好比盖房子的地基一样,那玩意给你拐弯抹角你能说不踩坑?比如看着是360G,真正用上之后才知道每个月30G,回头仔细看套餐详情,原来是360G每年。还是定向流量,年字小到根本看不到。如 ...
class中函数的this指向
定义一个基础的类12345678class Person { constructor(name = "杜恒") { this.name = name; } speak() { console.log(this); }} 将上面的类实例出一个对象p,并调用p的speak方法 12const p = new Person();p.speak(); // Person {name: "杜恒"} 上面的打印结果显示由类构造出的实例对象,因此this会指向由类构造出的实例对象 尝试将p实例对象身上的speak方法赋值给另一个变量进行调用 12const test = p.speak;test(); // undefined 打印undefind,因此上面的方法可以改写成如下 12345const test = function () { "use strict"; console.log(this);}; ...
Vue底层判断标签的性能优化方法
在vue中,如果写div、span等正常的html标签,vue会解析成传统的html标签,但当写不是这些标签的时候,vue会认为他是一个组件,例如:<Custom></Custom>。是如何做到这种判断的呢,首先自己来实现一个这样的判断 1234567const tags = "div,span,img,a".split(",");function checkTag(tag) { return tags.some((item) => item === tag);}console.log(checkTag("Custom")); // falseconsole.log(checkTag("div")); // trueconsole.log(checkTag("a")); // true 这里的实现方案有很多,可以用for、some、forEach等,但是都是离不开循环,思考这样的一个问题,传入一个a,a在字符串最后一个位置,所以会循环 ...
Vue.set与this.$set源码
Vue.set()和this.$set()应用的场景在 Vue 2.X 项目开发中,有时候需要对数组进行修改,或是对对象新增一个属性,但是发现页面并不会同步更新。例如: 12345678910const vm = new Vue({ data: { arr: [1, 2], obj: { a: 3, }, },});vm.$data.arr[0] = 3; // 页面不会发生改变vm.$data.obj.b = 3; // 页面不会发生改变 此时就需要使用到 Vue.set() 或 this.$set()。这个2个的使用方法一样,不过一个是挂载在Vue身上,一个挂载在Vue.prototype上 123456// Vue.setimport { set } from "../observer/index";Vue.set = set;// this.$setimport { set } from "../observer/i ...
火爆全球的ChatGPT,最全的使用方法!
ChatGPT是OpenAI旗下的一款聊天机器人,现在已经火遍全球,前几天我简要介绍了一下,很多小伙伴儿留言想知道怎么使用。目前来说,需要免费注册一个OpenAI账号,才能使用。可惜暂未对国内开放注册,无法访问。下面简要介绍几种方法,供大家参考。 ChatGPT高仿/反代① https://aigcfun.com 这个网站和官网的界面设计是一样的。免费使用、无需登录账号、无需科学上网,网站无广告,非常方便。打开网页后,直接输入问题提问即可。 ② http://chat.h2ai.cn/home 与上面的网站类似,界面为中文,与官网界面一致。可以作为备用。 ③ https://xc.com 这也是一个第三方的镜像网站,使用也比较简单。 官网直接注册ChatGPT的使用方法其实很简单,就是登录官方地址,注册一个账号,然后就可以免费使用了。之所以很多人搞不定,主要是尚未对国内开放,需要科学上网;在注册账号的过程中,有一步需要验证码,而这个验证码需要国外的手机号。因此,使用上有一定的门槛,下面简要说明: 1、科学上网,打开ChatGPT官网进行注册: htt ...
Vue 2与Vue 3在自定义组件v-model上的区别
在vue开发中,通常会对一个自定义的组件进行封装,并实现v-model双向绑定功能 在 Vue 2 中,通常这样实现父组件 12345678910111213141516<template> <Child v-model="number"></Child></template><script> export default { data() { return { number: 0, }; }, components: { Child: () => import("./Child.vue"), }, };</script> 子组件 1234567891011121314151617<template> <button @click="handleClick"> ...
Linux系统下使用iftop结合iptables服务解决带宽被恶意请求的问题
最近博客总时不时的打不开,或者是打开巨慢。打开宝塔面板,发现能登录,但是登录非常缓慢,最后挤进来后,看到流量可视化图,上行一直流量一直居高不下。服务器带宽是2兆的,上行200kb,说明直接将整个服务器带宽占满,导致服务器无法访问 排查Linux下使用iftop工具结合iptables服务来解决带宽资源被恶意请求满的问题,主要通过2个步骤来实现 使用iftop 工具查出来是哪些个IP地址在请求主机的带宽资源,找出耗带宽的元凶 找出耗带宽的IP地址或者段,分析是out方向还是in方向,使用iptables规则来进行控制 首先安装 iftop 工具 1yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel 接着输入 iftop -n 运行,运行后会出现以下界面 左侧表示自己的服务器的内网ip 中间的<= =>这两个左右箭头,表示的是流量的方向 右侧表示请求或发送的ip 最右侧表示流量信息 从上面图中可以看到,排行第一的流量消耗最大,并且是右箭头。反映出本地内网ip ...
AWS教程——解决WordPress网站加载缓慢的大难题
谁不喜欢免费的东西?谁不想网站访问更快呢?让我们试一试。借助亚马逊云技术的CloudFront CDN服务提供的免费套餐,通过简单的配置,加速你的WordPress网站。 作为一个强大的CMS(内容管理系统)平台,WordPress以其完善的功能、一流的定制能力和丰富的插件广受好评。从个人博客到企业网站,从初创企业到大型跨国企业,我们日常访问的很多网站都是基于WordPress创建的。 如果你有这样一个网站,想为世界各地的访问者提供快速流畅的访问体验,你该怎么做?最简单的方法是使用CDN,借助CDN服务提供商在全球主要地区的节点,将内容传递给附近的用户。但是这样一套方案会不会很贵?选择合适的CDN服务其实可以很便宜,甚至对于很多流量不是很大的网站来说, 完全可以实现免费 。 请注意,本文的所有操作将以全球版亚马逊云科技平台为准。点击 这里 详细了解CloudFront CDN服务并注册账户开始使用免费套餐。 先决条件要使用本文介绍的方法,你需要具备: 一个基于WordPress平台创建的现成网站; 为该网站安装一款名为“WPAdmin AWS CDN”的插件; 一个亚马逊云科 ...
记录部分安卓手机 input type="file"的onchange不能触发问题
今天写了一个文件上传,发现在部分安卓手机上触发不了onchange事件,代码如下: 1234567<input type="file" id="input" /><script> // 在部分安卓手机不触发 input.onchange = () => { alert(123); };</script> 经过不断测试后发现,在标签上补上accept=”image/*“后可解决该问题,修复后的代码如下: 123456<input type="file" accept="image/*" id="input" /><script> input.onchange = () => { alert(123); };</script>