- [html] [浏览器内多个标签页之间的通信方式有哪些?]
- [css] [简述下你理解的优雅降级和渐进增强]
- [js] [写一个判断数据类型的方法]
HTML:
WebSocket (可跨域)
postMessage(可跨域)
Worker之SharedWorker
Server-Sent Events
localStorage
BroadcastChannel
Cookies
[添加链接描述](https://xv700.gitee.io/message-communication-for-web/)
css:
渐进增强和优雅降级这两个概念是在 CSS3 出现之后火起来的。由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器中使用 CSS3,而在低级浏览器只保证最基本的功能。
优雅降级
先不考虑兼容,优先最新版本浏览器效果,之后再逐渐兼容低版本浏览器。
渐进增强
考虑兼容,以较低(多)浏览器效果为主,之后再逐渐增加对新版本浏览器的支持,以内容为主。也是多数公司所采用的方法。
JS
typeof 只能判断基本类型 string,number,boolean, undefined,object
null 会被判断成 object
比较全面的是使用 Object.prototype.toString 方法,只需要对返回值进行字符串分割即可
const typeCheck = (obj) => {
const typeStr = Object.prototype.toString.call(obj);
return typeStr.toLowerCase().slice(8, typeStr.length - 1);
};
console.log(typeCheck("str"));
console.log(typeCheck(1));
console.log(typeCheck(() => null));
console.log(typeCheck({a: 1}));
console.log(typeCheck([1, 2, 3]));
console.log(typeCheck(new Set([1,2,3])));
// 方法二
function type (obj) {
return Object.prototype.toString.call(obj).replace(/\[object\s|\]/g,'');
}
console.log(type([])) //"Array"
console.log(type(1)) //"Number"