<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yuntian1995的博客]]></title><description><![CDATA[一些前端方面的随笔]]></description><link>https://blog.youkuaiyun.com/yuntian1995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yuntian1995]]></copyright><item><title><![CDATA[让页面自适应屏幕]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/89162598</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/89162598</guid><author>yuntian1995</author><pubDate>Tue, 09 Apr 2019 21:34:07 +0800</pubDate><description><![CDATA[贴代码


'use strict';

/**
 * @param {Number} [baseFontSize = 100] - 基础fontSize, 默认50px, 对于iPhone的设计稿, 1rem=100px; 方便裸算rem; 有的是16px, 用浏览器默认;
 * @param {Number} [psdWidth = 750] - 设计稿默认宽度, 以750为基准;
 */

...]]></description><category></category></item><item><title><![CDATA[js的单例的简单实现]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79746215</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79746215</guid><author>yuntian1995</author><pubDate>Tue, 09 Apr 2019 21:17:05 +0800</pubDate><description><![CDATA[class Timer {
  constructor() {
    this.timerArr = [];
    this.timerAcc = 0;
    this.timerCycle = 100;
    this.timerFn = () =&gt; {
      // 判断是否有轮询方法
      if (this.timerArr.length) {
        th...]]></description><category></category></item><item><title><![CDATA[npm发布指南]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/88554806</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/88554806</guid><author>yuntian1995</author><pubDate>Thu, 14 Mar 2019 16:06:07 +0800</pubDate><description><![CDATA[在 https://www.npmjs.com/ 注册npm账号
本地登录npm账号（可用 npm whoami 测试是否登录

npm login 登陆

npm init本地初始化目录



配置package

修改对应的repository（与github绑定，主要是type和url）

files是最终构建上传的文件夹

scripts 打包和上传的命令



npm insta...]]></description><category></category></item><item><title><![CDATA[深拷贝]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79536561</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79536561</guid><author>yuntian1995</author><pubDate>Tue, 13 Mar 2018 10:11:16 +0800</pubDate><description><![CDATA[说起深拷贝,第一个想到的就是递归,递归的之前有座机滤,这里不贴代码了;记一个深拷贝除递归外的方法;var data = {
  xiaomin:{
    age: 12,
    sex: man,
  },
}
var copyData = JSON.parse(JSON.stringify(data ))经测试拷贝后的对象改变深一层的属性,不会影响拷贝前的对象的值;记录一个坑var copy...]]></description><category></category></item><item><title><![CDATA[数据监听的简单实现]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79499502</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79499502</guid><author>yuntian1995</author><pubDate>Fri, 09 Mar 2018 17:10:21 +0800</pubDate><description><![CDATA[复习前端犀牛书,看到了订阅者发布者模式;有感而发,谢了一个小demo,实现了简单的数据监听function Observer(data) {
    this.data = data;
    this.addMethod(data);
}

Observer.prototype.addMethod = function (obj) { // 枚举传入对象的所有属性
    var val = n...]]></description><category></category></item><item><title><![CDATA[事件节流方法]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79398471</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79398471</guid><author>yuntian1995</author><pubDate>Wed, 28 Feb 2018 11:53:30 +0800</pubDate><description><![CDATA[事件节流,简而言之就是防止事件被频繁触发;不多说,上代码;import DOM from '../methods/DOM';// 这是我之前单独写的一个绑定移除dom事件的方法;

class EventThrottle {
  constructor() {
    this.arr = []; // 保存所有绑定了事件节流的对象
  }

  // FN方法 duration时间,触发的最大频...]]></description><category></category></item><item><title><![CDATA[原生js绑定事件方法简单封装]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79387300</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79387300</guid><author>yuntian1995</author><pubDate>Tue, 27 Feb 2018 13:50:52 +0800</pubDate><description><![CDATA[const ListenerFN = function ({ target, event, FN, option = {} }) {
  if (target, event, FN) Error('target, event, FN');
  target.addEventListener(event, FN, option);
  return function () {
    target....]]></description><category></category></item><item><title><![CDATA[项目中遇到的，几个新的对象方法]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79264607</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79264607</guid><author>yuntian1995</author><pubDate>Mon, 05 Feb 2018 21:30:53 +0800</pubDate><description><![CDATA[项目中用到过的几个方法；
将对象的可枚举属性的name作为数组输出；

var a={name:'小明',age:'11'};
Object.value(a);// ['小明','11'];同理，还有对应的key方法
var a={name:'小明',age:'11'};
Object.key(a);// ['name','age'];还有更进一步的entries方法，将键值放入一个数组中]]></description><category></category></item><item><title><![CDATA[js的声明提前]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79264518</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79264518</guid><author>yuntian1995</author><pubDate>Mon, 05 Feb 2018 21:17:27 +0800</pubDate><description><![CDATA[var a=25;
(function() {
console.log(a);
var a=30;
})();等同于以下代码，所以输出a为undefined
var a=25;
(function() {
var a;
console.log(a);
a=30;
})();]]></description><category></category></item><item><title><![CDATA[记几个最近在项目中用到的es6语法（2018.1.29）]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/79200448</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/79200448</guid><author>yuntian1995</author><pubDate>Mon, 29 Jan 2018 22:09:53 +0800</pubDate><description><![CDATA[filter: 用于过滤，相当于循环并进行if判断，返回符合条件的项组成的新数组
const arr = [1,2,3,4,5];
const newArr = arr.filter((item) => item>3 );// newArr = [4,5]
map：循环每一项，并进行操作，返回新数组
const arr = [1,2,3,4,5];
const newArr = arr.ma]]></description><category></category></item><item><title><![CDATA[用typeof测试各种类型的返回结果]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/78413734</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/78413734</guid><author>yuntian1995</author><pubDate>Wed, 01 Nov 2017 14:28:02 +0800</pubDate><description><![CDATA[typeof(true);//boolean
typeof(undefined);//undefined
typeof(null);//object
typeof(NaN);//number
typeof(1);//number
typeof('1');//string
typeof(Function);//function
typeof(function);//报错]]></description><category></category></item><item><title><![CDATA[实现js控制浏览器全屏，相当于f11]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/78356463</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/78356463</guid><author>yuntian1995</author><pubDate>Thu, 26 Oct 2017 17:27:10 +0800</pubDate><description><![CDATA[关于用js实现控制浏览器全屏的方法]]></description><category></category></item><item><title><![CDATA[尝试用es6封装方法]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/78288377</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/78288377</guid><author>yuntian1995</author><pubDate>Thu, 19 Oct 2017 19:18:53 +0800</pubDate><description><![CDATA[es6的一些实践]]></description><category></category></item><item><title><![CDATA[简单的取表单数据的方法serializeArray]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/78247875</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/78247875</guid><author>yuntian1995</author><pubDate>Mon, 16 Oct 2017 11:25:12 +0800</pubDate><description><![CDATA[.serializeArray() 是jquery提供的序列化表单元素的方法，返回json对象
需要注意的是，元素应当含有name属性

id可以是单独的表单元素，也可以是form标签，以获取form下面的所有表单元素的值
function getFormData (id){
	let formData = $(id).serializeArray();
	let newData = {}]]></description><category></category></item><item><title><![CDATA[从零开始的webpack（一）]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/77844645</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/77844645</guid><author>yuntian1995</author><pubDate>Mon, 04 Sep 2017 23:02:43 +0800</pubDate><description><![CDATA[webpack入门的一些使用，为了防止忘记后，又得从其他地方去查]]></description><category></category></item><item><title><![CDATA[简单的页面模板引擎（一）]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/77783379</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/77783379</guid><author>yuntian1995</author><pubDate>Sat, 02 Sep 2017 00:10:01 +0800</pubDate><description><![CDATA[先不说啥了，上代码
   function render(str,obj){
        while(1){
            if(!str.match(/{{.+?}}/)){
                break;
            }
            let key=str.match(/{{.+?}}/)[0].replace(/({{)(.+?)(}})]]></description><category></category></item><item><title><![CDATA[闭包（一）]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/77610944</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/77610944</guid><author>yuntian1995</author><pubDate>Sun, 27 Aug 2017 00:00:12 +0800</pubDate><description><![CDATA[闭包的概念十分的抽象，直接上干货吧
function A(){
  var num=0;
  function B(){
	console.log(++num);
  }
  return B;
}
var C=A();
C();//1
C();//2
C();//3在这段代码中，B是在函数A内部声明的函数，但是因为A中将B给return了出去，所以在A外部声明的var C=A（），相当于将C指]]></description><category></category></item><item><title><![CDATA[div居中的方法]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/77543158</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/77543158</guid><author>yuntian1995</author><pubDate>Thu, 24 Aug 2017 22:55:56 +0800</pubDate><description><![CDATA[居中，这是个老生常谈的问题。
我一直以为这个根本不用去想他，用多了自然知道，没想到在一次面试上碰到，脑子里一时居然想不起来，妥妥的是挂了，回家赶紧做下笔记



  
  Document  
      .father{
          width:500px;
          height:600px;
          border:1px solid gray;]]></description><category></category></item><item><title><![CDATA[移动端H5，拍照，录制视频以及录音功能的调用]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/77542815</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/77542815</guid><author>yuntian1995</author><pubDate>Thu, 24 Aug 2017 22:14:53 +0800</pubDate><description><![CDATA[什么都不说，先上代码（原创）



  
  
  
  
  
  
  
  调用手机功能
  
    .btn {
      border-bottom: 2px solid #fff;
      display: block;
      text-align: center;
      padding: 2px 10%;
      margin: 2px 0;
    }

]]></description><category></category></item><item><title><![CDATA[http请求原理（一）]]></title><link>https://blog.youkuaiyun.com/yuntian1995/article/details/77513784</link><guid>https://blog.youkuaiyun.com/yuntian1995/article/details/77513784</guid><author>yuntian1995</author><pubDate>Thu, 24 Aug 2017 00:13:43 +0800</pubDate><description><![CDATA[虽然打开网页就是开始http请求，但是对于http的原理，了解的并不多。通过万能的度娘找到了对应的知识，赶紧存下来做笔记
http的工作原理
客户机与服务器建立连接后，发送一个请求给服务器，请求格式为：统一资源标识符、协议版本号。服务器收到请求的信息（包括请求行，请求头，请求体）。服务器接收到请求后，给予相应的响应信息，格式为一个状态行（包括响应行，响应头，响应体）。
在internet上，]]></description><category></category></item></channel></rss>