<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[南国以北的博客]]></title><description><![CDATA[前端]]></description><link>https://blog.youkuaiyun.com/qq_36725757</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_36725757]]></copyright><item><title><![CDATA[js类型判断]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/106790937</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/106790937</guid><author>qq_36725757</author><pubDate>Tue, 16 Jun 2020 17:14:19 +0800</pubDate><description><![CDATA[判断 Target 的类型，单单用 typeof 并无法完全满足，这其实并不是 bug，本质原因是 JS 的万物皆对象的理论。因此要真正完美判断时，我们需要区分对待:

基本类型(null): 使用 String(null)
	基本类型(string / number / boolean / undefined) + function: 直接使用 typeof即可
	其余引用类型(Array / Date / RegExp Error): 调用toString后根据[object XXX]进行判断
完善的判]]></description><category></category></item><item><title><![CDATA[Runtime Only VS Runtime + Compiler]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/98348183</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/98348183</guid><author>qq_36725757</author><pubDate>Sat, 03 Aug 2019 16:32:02 +0800</pubDate><description><![CDATA[vue Runtime Only 与 Runtime + Compiler两种版本的区分

在用vue-cli脚手架生成vue项目时，会让我们选择 runtime only和runtime+compiler两种版本，这两种版本有什么区别呢？

Runtime Only
我们在使用 Runtime Only 版本的 Vue.js 的时候，通常需要借助如 webpack 的 vue-loader 工具...]]></description><category></category></item><item><title><![CDATA[css绘制三角形及扇形]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/95347836</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/95347836</guid><author>qq_36725757</author><pubDate>Wed, 10 Jul 2019 16:50:36 +0800</pubDate><description><![CDATA[css绘制三角形。

1.正三角形（方向在正方向上）

eg：箭头向上


#triangle-up {
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 100px solid red;...]]></description><category></category></item><item><title><![CDATA[css-----典型webapp页面实现]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/84787817</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/84787817</guid><author>qq_36725757</author><pubDate>Tue, 04 Dec 2018 14:20:18 +0800</pubDate><description><![CDATA[主要是针对顶部与底部固定，中间内容部分自适应滚动的布局方法，应该还有很多，我这里介绍两种：

1.顶部与底部固定定位


​
html,
    body {
      padding: 0;
      margin: 0;
      width: 100%;
      height: 100%
    }

    .box {
      display: flex;
      fl...]]></description><category></category></item><item><title><![CDATA[面试题]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/81193681</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/81193681</guid><author>qq_36725757</author><pubDate>Tue, 24 Jul 2018 22:32:06 +0800</pubDate><description><![CDATA[1.var str = ‘asdasdasdafadadw’

判断‘a'在str中出现的次数

判断str中出现次数最多的字符，并给出次数

2.把数字按照千分位划分

3.把多维数组拍平;ex:var arr = [1,[1,2],[1,[1,2]],3] 输出为一维数组。

4.函数柯里化

5.手写弹性布局

6.判断引用类型变量是数组还是对象

7.数组排序的方法，冒泡排序的实现原理

...]]></description><category></category></item><item><title><![CDATA[Promise 对象]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/81068017</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/81068017</guid><author>qq_36725757</author><pubDate>Wed, 18 Jul 2018 13:49:08 +0800</pubDate><description><![CDATA[ 

 

Promise.prototype.catch()

Promise.prototype.catch方法是.then(null, rejection)的别名，用于指定发生错误时的回调函数。

Promise 的含义

Promise 是异步编程的一种解决方案，比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现，ES6 将其写进了语言标准，统一了用法，原生提供了...]]></description><category></category></item><item><title><![CDATA[set,map,weakset,weakMap]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/81004833</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/81004833</guid><author>qq_36725757</author><pubDate>Thu, 12 Jul 2018 17:49:55 +0800</pubDate><description><![CDATA[SETES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的，没有重复的值。Set 本身是一个构造函数，用来生成 Set 数据结构。const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x =&amp;gt; s.add(x));

for (let i of s) {
  console.log(i);
}
// 2 3 5 4上面代码...]]></description><category></category></item><item><title><![CDATA[es6数组]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80969474</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80969474</guid><author>qq_36725757</author><pubDate>Wed, 11 Jul 2018 15:46:42 +0800</pubDate><description><![CDATA[扩展运算符含义扩展运算符（spread）是三个点（...）。它好比 rest 参数的逆运算，将一个数组转为用逗号分隔的参数序列。+扩展运算符的应用 § ⇧（1）复制数组数组是复合的数据类型，直接复制的话，只是复制了指向底层数据结构的指针，而不是克隆一个全新的数组。const a1 = [1, 2];
const a2 = a1;

a2[0] = 2;
a1 // [2, 2]
上面代码中，a2并...]]></description><category></category></item><item><title><![CDATA[es6--杂杂杂*（函数）]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80926593</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80926593</guid><author>qq_36725757</author><pubDate>Sun, 08 Jul 2018 19:22:14 +0800</pubDate><description><![CDATA[函数扩展函数参数中 (...parameter)  ES6 引入 rest 参数（形式为...变量名），用于获取函数的多余参数，这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组，该变量将多余的参数放入数组中。与arguments的区别:arguments对象不是数组，而是一个类似数组的对象。所以为了使用数组的方法，必须使用Array.prototype.slice.ca...]]></description><category></category></item><item><title><![CDATA[es6之变量解构赋值]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80815533</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80815533</guid><author>qq_36725757</author><pubDate>Tue, 26 Jun 2018 15:11:21 +0800</pubDate><description><![CDATA[一.圆括号的问题解构赋值虽然很方便，但是解析起来并不容易。对于编译器来说，一个式子到底是模式，还是表达式，没有办法从一开始就知道，必须解析到（或解析不到）等号才能知道。由此带来的问题是，如果模式中出现圆括号怎么处理。ES6 的规则是，只要有可能导致解构的歧义，就不得使用圆括号。但是，这条规则实际上不那么容易辨别，处理起来相当麻烦。因此，建议只要有可能，就不要在模式中放置圆括号。不适用园括号的情况以...]]></description><category></category></item><item><title><![CDATA[面试：浏览器兼容]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80558885</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80558885</guid><author>qq_36725757</author><pubDate>Sun, 03 Jun 2018 18:42:12 +0800</pubDate><description><![CDATA[题目点评这个问题是非常抽象的，越是抽象的问题越能表现出我们的表达能力，而面试官就喜欢根据你的回答来追问，不断地打断你的思路，这个时候不要慌，一定要坚信自己。回答思路我们在开发的时候会明确项目要兼容哪些浏览器的最低版本，我之前的项目要求兼容IE8.0以上的版本，Chrome 48以上，FireFox 44以上。有了这些最基本的要求，在开发中就是要考虑到CSS样式和JavaScript的在这些浏览器的...]]></description><category></category></item><item><title><![CDATA[css疑难杂症]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80435715</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80435715</guid><author>qq_36725757</author><pubDate>Thu, 24 May 2018 15:53:17 +0800</pubDate><description><![CDATA[input 取消选中状态   outline:none]]></description><category></category></item><item><title><![CDATA[html--meta标签]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80432136</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80432136</guid><author>qq_36725757</author><pubDate>Thu, 24 May 2018 15:23:21 +0800</pubDate><description><![CDATA[meta标签的定义:&amp;lt;meta&amp;gt; 元素可提供有关页面的元信息（meta-information），比如针对搜索引擎和更新频度的描述和关键词。&amp;lt;meta&amp;gt; 标签位于文档的头部，不包含任何内容。&amp;lt;meta&amp;gt; 标签的属性定义了与文档相关联的名称/值对。HTML 与 XHTML 之间的差异在 HTML 中，&amp;lt;meta&amp;gt; 标签没有结束标签。在 XHTML 中，...]]></description><category></category></item><item><title><![CDATA[浏览器对象模型（BOM）-（1）]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80383535</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80383535</guid><author>qq_36725757</author><pubDate>Sun, 20 May 2018 17:06:37 +0800</pubDate><description><![CDATA[浏览器对象模型（简称BOM），是独立于HTML界面的于浏览器相关的一些信息对象的模型。BOM主要由一系列的对象属性和方法组成。BOM也叫做浏览器对象模型,它提供了很多对象,用于访问浏览器的功能;这些功能与任何网页内容无关;BOM缺少规范,每个浏览器提供商都按照自己的想法去扩展它,那么浏览器共有对象就成了事实的标准;一 window对象// BOM的核心对象是window,它表示浏览器的一个实例;
...]]></description><category></category></item><item><title><![CDATA[浏览器对象模型（BOM）-（3）]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80383679</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80383679</guid><author>qq_36725757</author><pubDate>Sun, 20 May 2018 17:06:26 +0800</pubDate><description><![CDATA[Navigator对象Navigator包含了浏览器相关的一些信息例如浏览器的版本信息等等userAgent：返回由客户机发送服务器的user-agent 头部的值，可以用于判断浏览器的版本function version(){
    // 获取浏览器的User-Agent字符串
    var userAgent = navigator.userAgent;
​
    // 浏览器厂商或者版...]]></description><category></category></item><item><title><![CDATA[浏览器对象模型（BOM）-（2）]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80383648</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80383648</guid><author>qq_36725757</author><pubDate>Sun, 20 May 2018 17:03:33 +0800</pubDate><description><![CDATA[location对象location是BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能;事实上,location对象是window对象的属性,也是document对象的属性;alert(location); // 获取当前的URL(1).location对象的属性属性 描述的URL内容hash 如果该部分存在,表示锚点部分;host 主机名:端口号;hostname ...]]></description><category></category></item><item><title><![CDATA[js中函数防抖和节流]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80383247</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80383247</guid><author>qq_36725757</author><pubDate>Sun, 20 May 2018 16:28:18 +0800</pubDate><description><![CDATA[在js中，DOM操作(onresize, onscroll….等等操作)是最消耗性能的，但是一些场景中同一事件会多次触发，为了减少操作，从而有了节流的概念。函数节流的思想很简单：在每次出发的时候我们就开一个定时器，将DOM操作延迟，然后在下一次事件触发的时候，我们把这个定时器关掉，我们开关定时器，一直到一定的时机在触发事件。javaScript 高级程序设计中的方法function throttl...]]></description><category></category></item><item><title><![CDATA[js变量提升]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80366400</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80366400</guid><author>qq_36725757</author><pubDate>Sun, 20 May 2018 16:16:21 +0800</pubDate><description><![CDATA[在了解变量提升之前,应该先了解一下js到底是一种什么类型的语言,他的运行机制又是怎样的.javascript 是一种弱类型、动态的、解释型的脚本语言。弱类型：类型检查不严格，偏向于容忍隐式类型转换。 强类型：类型检查严格，偏向于不容忍隐式类型转换。 动态类型：运行的时候执行类型检查。 静态类型：编译的时候就知道每个变量的类型。 解释型：程序不需要编译，程序在运行的时候才翻译成机器语言，每执行一次都...]]></description><category></category></item><item><title><![CDATA[AngularJS iframe跨域打开内容时报差错的解决办法]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80364620</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80364620</guid><author>qq_36725757</author><pubDate>Fri, 18 May 2018 15:05:19 +0800</pubDate><description><![CDATA[最近在angular中发现了一个 跨域的问题,在angular框架中使用 iframe标签通过ng-src打开不同域名下的资源会发生跨域情况解决办法即:通过$sceDelegateProvider绑定白名单,代码如下&amp;lt;body&amp;gt;
	&amp;lt;div ng-app='myapp' ng-controller='myCtrl'&amp;gt;
		&amp;lt;iframe ng-src=&quot;{{url}}...]]></description><category></category></item><item><title><![CDATA[npm指令]]></title><link>https://blog.youkuaiyun.com/qq_36725757/article/details/80218003</link><guid>https://blog.youkuaiyun.com/qq_36725757/article/details/80218003</guid><author>qq_36725757</author><pubDate>Sun, 06 May 2018 20:36:47 +0800</pubDate><description><![CDATA[先说明一下 -g --save -save-dve的意思-save和save-dev可以省掉你手动修改package.json文件的步骤。-g就是全局安装 --save 自动把模块和版本号添加到dependencies部分-save-dve 自动把模块和版本号添加到devdependencies部分devdependencies与dependencies的区别：devDependencies  里...]]></description><category></category></item></channel></rss>