# 2023-11-06
# 📝 React 设计模式读书笔记
# 📝 Hook
# 2023-11-04
# 📝 JS红皮书笔记
# 📝 声明合并(Declaration Merging)
# 📝 模块声明
# ✨ 微前端后台改造方案
# 2023-09-25
# 📝 JS红皮书笔记
# 📝 声明合并(Declaration Merging)
# 📝 模块声明
# 2023-08-31
# 📝 JS红皮书笔记
# 2023-05-05
# 📝 微信H5移动端真机调试
# ✨ 逆向抓包
# 2023-03-22
# 📝 常用操作
# 📝 chrome 扩展开发
# ✨ Linux 常用命令
# 2023-02-21
# 📝 常用操作
# ✨ 新学React 18.2
# ✨ [动态挂载组件 $mount (opens new window)](/view/Vue/24.md)
# 2023-01-30
# 📝 常用操作
# 📝 正则表达式
# 📝 ascll unicode编码
# 2022-12-22
# 📝 git log
# 📝 chrome 扩展开发
# 📝 Vue3.0最佳实践
# ✨ ascll unicode编码
# 2022-12-22
# 📝 git log
# 📝 chrome 扩展开发
# 📝 Vue3.0最佳实践
# ✨ ascll unicode编码
# ✨ [if (!String.prototype.codePointAt) {
(function() {
'use strict'; // 严格模式,needed to support `apply`/`call` with `undefined`/`null`
var codePointAt = function(position) {
if (this == null) {
throw TypeError();
}
var string = String(this);
var size = string.length;
// 变成整数
var index = position ? Number(position) : 0;
if (index != index) {
// better `isNaN`
index = 0;
}
// 边界
if (index < 0 || index >= size) {
return undefined;
}
// 第一个编码单元
var first = string.charCodeAt(index);
var second;
if (
// 检查是否开始 surrogate pair
first >= 0xd800 &&
first <= 0xdbff && // high surrogate
size > index + 1 // 下一个编码单元
) {
second = string.charCodeAt(index + 1);
if (second >= 0xdc00 && second <= 0xdfff) {
// low surrogate
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;
}
}
return first;
};
if (Object.defineProperty) {
Object.defineProperty(String.prototype, 'codePointAt', {
value: codePointAt,
configurable: true,
writable: true
});
} else {
String.prototype.codePointAt = codePointAt;
}
})();
}](/view/JS/28.md)