【2020-12-3】随笔

8 篇文章 0 订阅

bind的实现

  • 实现之前,回顾一下将类数组转化为数组有哪些方法
  1. 利用改变原数组的方法slice()
    - slice()可以不传参数,结果就是将原数组整个切割下来返回一个数组
    - slice(start,end),end取不到
var a = [1,2,3];
var b = a.slice(); //b为[1,2,3]
var c = a.slice(0,2);//c为[1,2]

那么将类数组转化为数组

//基于slice
var arr = Array.prototype.slice.call(类数组);
//或者
var arr = [].slice.call(类数组)
  1. 利用es6语法
    var arr = Array.from(类数组)
  2. 剩余参数
    var arr = [...类数组];

bind实现代码

Function.prototype.bind = function (oThis) {
    if (typeof this !== "function") {
      throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
    }

    var aArgs = Array.prototype.slice.call(arguments, 1), 
        fToBind = this, 
        fNOP = function () {},
        fBound = function () {
          return fToBind.apply(
              this instanceof fNOP && oThis ? this : oThis || window,
              aArgs.concat(Array.prototype.slice.call(arguments))
          );
        };
    fNOP.prototype = this.prototype;
    fBound.prototype = new fNOP();
    return fBound;
  };

vue中v-for中绑定的key有什么作用

  1. vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面。而隐藏在背后的原理便是其高效的Diff算法。
  2. vue和react的虚拟DOM的Diff算法大致相同,其核心是基于两个简单的假设:
    • 两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构。
    • 同一层级的一组节点,他们可以通过唯一的id进行区分。
  3. 需要使用key来给每个节点做一个唯一标识,Diff算法就可以正确的识别此节点,找到正确的位置区插入新的节点
  4. key的作用主要是为了高效的更新虚拟DOM。另外vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们,否则vue只会替换其内部属性而不会触发过渡效果。

攻击https的方法

针对于HTTPS的攻击,多存在于中间人攻击的环境中,主要是针对于HTTPS所使用的压缩算法和CBC加密模式,进行side-channel-attack。这几类攻击的前置条件都比较苛刻,且都需要受害主机提交很多次请求来收集破译关键数据的足够信息。

攻击者可以获取受害者的网络通信包。(中间人攻击,ISP供应商)

浏览器和服务器支持均支持并使用压缩算法。

攻击这可以控制受害者发送大量请求并可以控制请求内容。

原文

let Single = (function(){
	let instance;
	return function(name){
		if(instance !== null){
			return instance;
		}
		this.name = name;
		instance = this;
	}
})()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值