<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wosifp的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wosifp</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wosifp]]></copyright><item><title><![CDATA[21天完美搞定Vue框架技术（第3天）]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104489091</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104489091</guid><author>wosifp</author><pubDate>Tue, 25 Feb 2020 01:29:41 +0800</pubDate><description><![CDATA[前言：
上一节我们主要学的是【选项合并】，了解了初始化阶段各个选项的合并策略，
本节课我们来学一下【数据代理】这个知识点。
1、数据代理的定义
数据代理，也叫作数据劫持。有两个核心作用：
(1)在访问对象的属性时，可以进行其他的操作
(2)在修改对象的属性时，可以修改返回的结果
说白了，就是会自动触发一些函数(方法)，在该函数(方法)中处理我们业务逻辑上的需求。
2、数据代理的种类
这里给大家介绍...]]></description><category></category></item><item><title><![CDATA[21天完美搞定Vue框架技术（第2天）]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104436411</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104436411</guid><author>wosifp</author><pubDate>Fri, 21 Feb 2020 22:42:29 +0800</pubDate><description><![CDATA[前言：
实例化Vue的核心是做_init方法的初始化
初始化的关键一步是选项的合并
合并的本质就是用户自定义选项和Vue自带默认选项的合并
所以，今天我们要学习的就是关于选项合并的一些知识
1、Vue当中每种选项合并都有定义好的合并策略
合并策略原则：
（1）如果父类组件和子类组件有相同的选项，直接合并
（2）如果父子组件没有相同选项，子类组件有取子组件，没有子组件取父组件
2、选项合并的种类
包...]]></description><category></category></item><item><title><![CDATA[21天完美搞定Vue框架技术（第1天）]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104397789</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104397789</guid><author>wosifp</author><pubDate>Wed, 19 Feb 2020 18:16:38 +0800</pubDate><description><![CDATA[1、Vue本质上是一个构造函数，只能通过new调用
function Vue (options) {
    // 保证了无法直接通过Vue()去调用，只能通过new的方式去创建实例
    if (!(this instanceof Vue)) {
        warn('Vue is a constructor and should be called with the `new` key...]]></description><category></category></item><item><title><![CDATA[两种JavaScript异常处理的方式]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104360873</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104360873</guid><author>wosifp</author><pubDate>Mon, 17 Feb 2020 16:57:58 +0800</pubDate><description><![CDATA[一、浏览器抛出异常
1、标准格式
try{ 
    //可能发生异常的代码 
}catch(error){ 
    //发生错误执行的代码 
}

2、finally语句
try{ 
    //可能发生异常的代码 
}catch(error){ 
    //发生错误执行的代码 
}finally{
    // 不管 try 中的语句有没有错误，都会执行的语句
}

即：try 中语句不发...]]></description><category></category></item><item><title><![CDATA[JavaScript模块化的作用、原理、方案]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104311803</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104311803</guid><author>wosifp</author><pubDate>Fri, 14 Feb 2020 14:45:16 +0800</pubDate><description><![CDATA[一、模块化概念
将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起；
块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信。
二、模块化作用
为什么要用模块化的JavaScript？
因为在实际的开发过程中，经常会遇到变量、函数、对象等名字的冲突，这样就容易造成冲突，还会造成全局变量被污染；
同时，程序复杂时需要写很多代码，而且还要引入很多类库...]]></description><category></category></item><item><title><![CDATA[JavaScript中的this原理及6种常见使用场景]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104298625</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104298625</guid><author>wosifp</author><pubDate>Thu, 13 Feb 2020 17:17:34 +0800</pubDate><description><![CDATA[一、this原理
this是JavaScript的一个关键字，函数调用时才会出现；
因为函数是在一定的环境中运行的，调用函数时肯定需要知道是[谁调用的]？就用到了this进行指向；
那么this到底指向的是什么？
this 既不指向函数自身，也不指函数的词法作用域，而是调用函数时的对象！
二、使用场景
（一）普通函数的调用，this指向的是Window
var name = '卡卡';
func...]]></description><category></category></item><item><title><![CDATA[JavaScript中的执行上下文及调用堆栈]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104279411</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104279411</guid><author>wosifp</author><pubDate>Wed, 12 Feb 2020 15:33:41 +0800</pubDate><description><![CDATA[一、执行上下文是什么
代码运行是在一定的环境之中运行的，这个运行环境我们就成为执行环境，也就是执行上下文，按照执行环境不同，我们可以分为三类：
全局执行环境：代码首次执行时候的默认环境
函数执行环境：每当执行流程进入到一个函数体内部的时候
Eval执行环境：当eval函数内部的文本执行的时候

二、执行上下文栈是什么
既然是‘栈’，那就得符合‘栈’的特性，即数据结构是先进后出。下面我们看一段代码：...]]></description><category></category></item><item><title><![CDATA[JavaScript中闭包的概念、原理、作用及应用]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104267070</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104267070</guid><author>wosifp</author><pubDate>Tue, 11 Feb 2020 18:12:01 +0800</pubDate><description><![CDATA[一、闭包概念
闭包：有权访问另一个函数作用域中的变量的函数；一般情况就是在一个函数中包含另一个函数。
从官方定义我们知道闭包是一个函数，只不过这个函数有[超能力]，可以访问到另一个函数的作用域。
为什么说这个叫做[超能力]呢？
因为我们知道函数作用域是独立的、封闭的，外部的执行环境是访问不了的，但是闭包具有这个能力和权限。
那闭包是怎样的一个表现形式呢？
第一，闭包是一个函数，而且存在于另一个函...]]></description><category></category></item><item><title><![CDATA[JS中的词法作用域(静态作用域)和动态作用域]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104252442</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104252442</guid><author>wosifp</author><pubDate>Mon, 10 Feb 2020 18:10:30 +0800</pubDate><description><![CDATA[首先说明一下，JavaScript没有用动态作用域概念，但 this 机制却和动态作用域类似！
JavaScript是通过作用域链的方式进行变量查找的，而JS作用域链是词法作用域，也就做静态作用域！
词法作用域：在函数声明（定义）时确定的
动态作用域：在函数调用时确定的
var cat = '有鱼';
function person() {
	console.log(cat); // 有鱼
}
f...]]></description><category></category></item><item><title><![CDATA[深入理解JavaScript的作用域和作用域链]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104247079</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104247079</guid><author>wosifp</author><pubDate>Mon, 10 Feb 2020 13:29:21 +0800</pubDate><description><![CDATA[一、作用域
(一)作用域是什么
了解作用域之前先看一下变量和函数，变量和函数都有一定的访问权限，就是必须满足条件或者在某个范围之内才能访问，这个范围就是作用域。
它具体表现形式就是一段特定的代码，在该代码段中的变量和函数是封闭的、独立的，这样变量才不会泄露、污染。
var cat = '有鱼';
function Person(){
    var name = '张三';
    console...]]></description><category></category></item><item><title><![CDATA[全面理解JavaScript中class的实现原理]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104217203</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104217203</guid><author>wosifp</author><pubDate>Fri, 07 Feb 2020 23:07:37 +0800</pubDate><description><![CDATA[一、class类概念与语法
ES5之前不存在类的概念，创建对象使用的构造函数，通过new操作符来创建；
为使JS更像面向对象，ES6版本引入class概念，其基本语法：
class Cat{
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
    Say(){
        re...]]></description><category></category></item><item><title><![CDATA[彻底了解instanceof的底层实现原理]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104203753</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104203753</guid><author>wosifp</author><pubDate>Thu, 06 Feb 2020 22:49:01 +0800</pubDate><description><![CDATA[一、作用
①用于判断某个实例是否属于某构造函数
②在继承关系中用来判断一个实例是否属于它的父类型或者祖先类型的实例
说白了，只要右边变量的 prototype 在左边变量的原型链上即可。因此，instanceof 在查找的过程中会遍历左边变量的原型链，直到找到右边变量的 prototype，如果查找失败，则会返回 false
二、语法
[对象] instanceof [构造函数]
如：
var o...]]></description><category></category></item><item><title><![CDATA[6种JavaScript继承方式及优缺点]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104190819</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104190819</guid><author>wosifp</author><pubDate>Thu, 06 Feb 2020 00:52:11 +0800</pubDate><description><![CDATA[温馨提示：想要更好的理解JS继承方式，须了解构造函数、原型对象、实例化对象、原型链等概念
第一种：原型链继承
利用原型链的特点进行继承
function Parent(){
    this.name = 'web前端';
    this.type = ['JS','HTML','CSS'];
}
Parent.prototype.Say=function(){
    console.log(...]]></description><category></category></item><item><title><![CDATA[JavaScript中new操作符的详细过程]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104172030</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104172030</guid><author>wosifp</author><pubDate>Tue, 04 Feb 2020 17:08:39 +0800</pubDate><description><![CDATA[理解new对象过程，需要提前了解原型及原型链的相关知识
我们都知道，JS当中创建对象使用的是原型设计模式，即使用new操作符调用构造函数
这里先看一个例子：
function Person(name,sex){
    this.name = name;
    this.sex = sex;
};
Person.prototype.go = function(){
    return this...]]></description><category></category></item><item><title><![CDATA[JavaScript中精度失准问题及解决方法]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104163004</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104163004</guid><author>wosifp</author><pubDate>Mon, 03 Feb 2020 22:25:01 +0800</pubDate><description><![CDATA[首先来看一下JavaScript中的数字类型的存储情况
①JS中所有的数字（小数、整型）都是浮点型
②JS中小数、整型都是Number类型
③JS中Number类型使用binary64或双精度表示的，实质是一个二进制格式64位的浮点数
④64位的二进制具体为最高的1位是符号位，接着的11位是指数，剩下的52位为有效数字
⑤符号位决定了一个数的正负，指数部分决定了数值的大小，小数部分决定了数值的精度...]]></description><category></category></item><item><title><![CDATA[JavaScript隐式转换之道]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104150470</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104150470</guid><author>wosifp</author><pubDate>Sun, 02 Feb 2020 22:33:08 +0800</pubDate><description><![CDATA[JavaScript的数据类型隐式转换主要分为三种情况

场景一：算术运算符
转化原则：大致是换为数值，个别是换为字符串
-*/%运算符
①字面量及new内置对象，true为1；false为0
②null为0
③undefined为NaN
④字符串的字面量及new内置对象，空字符串为0，纯数字为数字本身，带有非数字时为NaN；
⑤对象及数组等引用类型，先变为字符串，再根据④进行转变
+号运算符
以...]]></description><category></category></item><item><title><![CDATA[2020前端·程序员专属日历-1月18日]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104028055</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104028055</guid><author>wosifp</author><pubDate>Sat, 18 Jan 2020 10:51:51 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[2020前端·程序员专属日历-1月17日]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/104020336</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/104020336</guid><author>wosifp</author><pubDate>Fri, 17 Jan 2020 15:38:29 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[1+x证书Web 前端开发初级——理论考试（试卷1）]]></title><link>https://blog.youkuaiyun.com/wosifp/article/details/103644899</link><guid>https://blog.youkuaiyun.com/wosifp/article/details/103644899</guid><author>wosifp</author><pubDate>Sat, 21 Dec 2019 15:31:07 +0800</pubDate><description><![CDATA[一、单选题（每小题2分，共 30 小题，共 60 分）
1.HTML语言中，设置表格中文字与边框距离的标签是（）
A、
B、
C、
D、
2.以下说法，错误的是（）
A、mark用于显示变粗的文字
B、用于显示删除的文本
C、的文字会带下划线
D、用于强调文本
3.设置文字颜色应使用属性（）
A、font-family
B、font-color
C、color
D、font
4.根据规范，哪些标签...]]></description><category></category></item></channel></rss>