给对象添加filter方法

给对象添加 filter 方法

es6 中数组类型拥有 filter 方法,但有时我们会需要让对象类型也使用这个方法,例如有这么一个对象:

1
2
3
const person = {
name: "star",
}

那么是否可以在Object.prototype上增加 filter 方法用来给所有对象使用呢?

1
2
3
4
5
6
7
8
9
Object.prototype.filter = function (predicate) {
const result = {}
for (key in this) {
if (this.hasOwnProperty(key) && !predicate(this[key])) {
result[key] = this[key]
}
}
return result
}

答案是不允许的,因为所有引用类型的原型链上都有Object.prototype,所以这会导致这些类型都被莫名奇妙地增加了这个方法。所以,在Object上新增方法更加合适,例如:

blob开头的视频地址

自从h5提供了video标签后,只需要设置src属性便可以简单的播放视频。早期src直接指向真实视频地址,同时不会通过referrer等方式防盗链,只要获取了地址就可以随便下载视频。而现在视频网站使用了一些小手段:

blob:https是什么东西?

其实这是在js中给video标签的src属性设置了blob对象,浏览器内部进行处理后展示的src属性值。

它有很多好处,包括简单的防盗链、随时改变视频属性(清晰度)等。

一、怎么获取想要的视频?

Read More

正则进阶

正则进阶

零宽断言

先行断言

  • 语法:/reg1(?=reg2)/
  • 含义:/(?=reg2)/本身在正则中不占位,它所在的位置的后面要有reg2
  • 作用:匹配reg1,同时后面要有reg2
  • 举例:
1
/[a-z]*(?=t)/.exec('got it') // ["go", index: 0, input: "got it", groups: undefined]

Read More

父子组件生命周期执行顺序

React父子组件生命周期执行顺序

  • 首次加载:parent-constructor => parent-getDerivedStateFromProps => parent-render => child-constructor => child-getDerivedStateFromProps => child-render => child-componentDidMount => parent-componentDidMount

  • 更新组件:parent-getDerivedStateFromProps => parent-shouldComponentUpdate => parent-render => child-getDerivedStateFromProps => child-shouldComponentUpdate => child-render => child-componentDidUpdate => parent-componentDidUpdate

  • 销毁组件:parent-componentWillUnmount => child-componentWillUnmount

生命周期详情:

Read More