自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 深入理解javascript原型和闭包(18)——完结

关于深入理解javascript原型和闭包全部转载自https://www.cnblogs.com/wangfupeng1988/p/3977924.html本身是在网上看视频教程,感觉很多不懂,然后看到推荐的学习文章,只是为了让自己学习的更认真一些,所以一边转载一边看,但是不知道哪里可以设置为仅自己可见,所以只好在这里注明转载。这个过程中原来模模糊糊的一些问题清晰了很多,当然还有一些没弄明白的地方

2017-11-20 14:41:16 191

转载 深入理解javascript原型和闭包(17)——补充:上下文环境和作用域的关系

先用简单的语言来概括一下上下文环境和作用域的区别。00 上下文环境:可以理解为一个看不见摸不着的对象(有若干个属性),虽然看不见摸不着,但确实实实在在存在的,因为所有的变量都在里面存储着,要不然咱们定义的变量在哪里存?另外,对于函数来说,上下文环境是在调用时创建的,这个很好理解。拿参数做例子,你不调用函数,我哪儿知道你要给我传什么参数?01 作用域:首先,它很抽象。第二,记住一句话:除了全局作用域,

2017-11-20 14:34:48 164

转载 深入理解javascript原型和闭包(16)——补this

要补充的内容是,在构造函数的prototype中,this代表着什么。function Fn(){ this.name='小明'; this.year=1991; } Fn.prototype.getName=function(){ console.log(this.name); } var f1=new Fn(); f1.getName();//小明 如上代码,在Fn.pr

2017-11-20 10:18:21 145

转载 深入理解javascript原型和闭包(15)——闭包

关于“闭包”只需要知道应用的两种情况即可——函数作为返回值,函数作为参数传递。第一,函数作为返回值如上代码,bar函数作为返回值,赋值给f1变量。执行f1(15)时,用到了fn作用域下的max变量的值。第二,函数作为参数被传递如上代码中,fn函数作为一个参数被传递进入另一个函数,赋值给f参数。执行f(15)时,max变量的取值是10,而不是100。上一节讲到自由变量跨作用域取值时,曾经强调过:要去创

2017-11-20 10:12:01 157

转载 深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】

先解释一下什么是“自由变量”。在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。如下图如上程序中,在调用fn()函数时,函数体中第6行。取b的值就直接可以在fn作用域中取,因为b就是在这里定义的。而取x的值时,就需要到另一个作用域中取。到哪个作用域中取呢?有人说过要到父作用域中取,其实有时候这种解释会产生歧义。例如:所以,不要在用以上说

2017-11-17 14:27:19 147

转载 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】

如上图,除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时确定。下面我们将按照程序执行的顺序,一步一步把各个上下文环境加上。第一步,在加载程序时,已经确定了全局上下文环境,并随着程序的执行而对变量就行赋值。第二步,程序执行到第27行,调用fn(10),此时生成此次调用fn函数时的上下文环境,压栈,并将此上下文环境设置为活动状态。 第三步,执行到第2

2017-11-17 12:00:39 133

转载 深入理解javascript原型和闭包(12)——简介【作用域】

提到作用域,有一句话可能比较熟悉:“javascript没有块级作用域”。所谓“块”,就是大括号“{}”中间的语句。例如if语句:var i=10; if(i>1){ var name='小明' } console.log(name);//小明 再比如for语句:for(var i=0;i<10;i++){ //... } console.log(i);//10 所以,我们在编写代码

2017-11-17 11:36:03 115

转载 深入理解javascript原型和闭包(11)——执行上下文栈

执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境。当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境。处于活动状态的执行上下文环境只有一个。其实这是一个压栈出栈的过程——执行上下文栈。如下图:可根据以下代码来详细介绍上下文栈的压栈、出栈过程。如上代码。在执行代码之前,首先将创建全局上下文环境。然后是代码执行。代码执行到第12行之前,上下文

2017-11-17 10:56:19 165

转载 深入理解javascript原型和闭包(10)——this

this的取值,分四种情况。我们来挨个看一下。在此再强调一遍一个非常重要的知识点:在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了。因为this的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境。情况1:构造函数所谓构造函数就是用来new对象的函数。其实严格来说,所有的函数都可以new一个对象,但是有些函数的定义是为了new一个对象,而

2017-11-17 10:38:01 120

转载 深入理解javascript原型和闭包(9)——简述【执行上下文】下

上一篇讲到在全局环境下的代码段中,执行上下文环境中有如何数据:变量、函数表达式——变量声明,默认赋值为undefined; this——赋值; 函数声明——赋值;如果在函数中,除了以上数据之外,还会有其他数据。先看以下代码:上代码展示了在函数体的语句执行之前,arguments变量和函数的参数都已经被赋值。从这里可以看出,函数每被调用一次,都会产生一个新的执行上下文环境。因为不同的调用可能就会有

2017-11-16 17:41:26 178

转载 深入理解javascript原型和闭包(8)——简述【执行上下文】上

什么是“执行上下文”(也叫做“执行上下文环境”)?暂且不下定义,先看一段代码:第一句报错,a未定义,很正常。第二句、第三句输出都是undefined,说明浏览器在执行console.log(a)时,已经知道了a是undefined,但却不知道a是10(第三句中)。在一段js代码拿过来真正一句一句运行之前,浏览器已经做了一些“准备工作”,其中就包括对变量的声明,而不是赋值。变量赋值是在赋值语句执行的时

2017-11-16 17:10:48 160

转载 深入理解javascript原型和闭包(7)——原型的灵活性

在Java和C#中,可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼。压个啥样,就得是个啥样,不能随便动,动一动就坏了。而在javascript中,就没有模子了,月饼被换成了面团,你可以捏成自己想要的样子。首先,对象属性可以随时改动。对象或者函数,刚开始new出来之后,可能啥属性都没有。但是你可以这会儿加一个,过一会儿在加两个,非常灵活。在jQuery的源码中,对象被创建时

2017-11-16 16:15:24 210

转载 深入理解javascript原型和闭包(6)——继承

原型链如果解释清楚了很容易理解,而“继承”却是常用面向对象语言中最基本的概念,但是java中的继承与javascript中的继承又完全是两回事儿。因此,这里把“继承”着重拿出来,就为了体现这个不同。javascript中的继承是通过原型链来体现的。先看几句代码以上代码中,f1是Foo函数new出来的对象,f1.a是f1对象的基本属性,f1.b是怎么来的呢?——从Foo.prototype得来,因为f

2017-11-16 15:33:47 205

转载 深入理解javascript原型和闭包(5)——instanceof

又介绍一个老朋友——instanceof。对于值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/function,你不知道它到底是一个object对象,还是数组,还是new Number等等。这个时候就需要用到instanceof。例如:function Foo() {}; var f1=new

2017-11-16 14:34:50 105

转载 深入理解javascript原型和闭包(4)——隐式原型

每个函数function都有一个prototype,即原型。这里再加一句话——每个对象都有一个_proto_,可成为隐式原型。var obj={}; console.log(obj.__proto__); 上图看来,obj._proto_和Object.prototype的属性一样!这么巧!答案就是一样。obj这个对象本质上是被Object函数创建的,因此obj._proto_=== Object.

2017-11-16 11:42:56 238

转载 深入理解javascript原型和闭包(3)——prototype原型

prototype也是我们的老朋友,即使不了解的人,也应该都听过它的大名。之前有说到,函数也是一种对象。它也是属性的集合,你也可以对函数进行自定义属性。不用等咱们去试验,javascript自己就先做了表率,人家就默认的给函数一个属性——prototype。对,每个函数都有一个属性叫做prototype。这个prototype的属性值是一个对象(属性的集合,再次强调!),默认的只有一个叫做const

2017-11-16 11:14:34 211

转载 深入理解javascript原型和闭包(2)——函数和对象的关系

函数是一种对象,但是函数却不像数组一样——可以说数组是对象的一种,因为数组就像是对象的一个子集一样。但是函数与对象之间,却不仅仅是一种包含和被包含的关系,函数和对象之间的关系比较复杂,甚至有一点鸡生蛋蛋生鸡的逻辑。一个小例子: function Fn() { this.name = '小明'; this.year = 1991; } var fn

2017-11-16 11:06:13 112

转载 深入理解javascript原型和闭包(1)——万物皆对象

万物皆对象function show(x) { console.log(typeof x); // undefined console.log(typeof 10); // number console.log(typeof 'abc'); // string console.log(typeof true); // bool

2017-11-16 10:58:14 500

原创 学习笔记

1.angular和vue的比较  Vue与Angular同属于MVVM框架,MVVM的本质是通过数据绑定链接View和Model,让数据的变化自动映射为视图的更新。Vue.js在数据绑定的API设计上借鉴了Angular的指令机制:用户可以通过具有特殊前缀的HTML 属性来实现数据绑定,也可以使用常见的花括号模板插值,或是在表单元素上使用双向绑定。angular所有的数据和方法都是挂载在$

2017-06-05 08:31:43 238

原创 面试8

1.如何理解HTML语义化 语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化),便于开发者阅读和写出更优雅的代码的同时,让浏览器的爬虫和机器很好的解析。 好处: 有利于SEO,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字的权重。 语义化的HTML在没有CSS的情况下也能呈现较好的内容结构与代码结构 方便其他设备的解析 便于团队开发和维护

2017-05-25 08:19:21 290

转载 常见http状态码

基本转自http://www.cnblogs.com/shanyou/archive/2012/05/06/2486134.html 当用户通过http访问服务器端,服务器会返回一个状态码,状态码可以表明请求是否成功或者哪里出了问题。 常见的状态码有: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用  1xx(临时响应)  表示临时响应并需要请

2017-05-16 09:07:44 153

转载 关于函数中this指向的问题

关于函数中this指向的问题 规则0:函数本身是一个特殊类型,大多数时候,可以认为是一个变量。  复制代码代码如下: function a()  {  alert(this);  }  或者  var a = function()  {  alert(this);  }  都可以认为是创建了一个变量,这个变量的值就是一个函数。  规则1:如

2017-05-14 09:50:55 3659 1

原创 面试7

1.事件委托以及原理 将原本需要添加到每个元素节点的监听事件委托给他们的父元素来执行,原理就是事件冒泡机制。 2.行内元素和块级元素分别有哪些,二者差别?(非常简单的问题 可是懵了搞混了) 行内元素:span,   strong,   em,  br,  img ,  input,  label,  select,  textarea 块级元素:div  , p  ,

2017-05-14 09:27:07 200

转载 面试6

懒加载的实现原理(除了使用插件): 大致(细节需要再看代码) 先将img标签中的src链接设为同一张图片(空白图片),将其真正的图片地址存储在img标签的自定义属性中(比如data-src)。当js监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到src属性中,达到懒加载的效果。 这样做能防止页面一次性向服务器响应大量请求导致服务器响应慢,页面卡顿或崩溃等问题。

2017-05-11 23:12:38 137

原创 面试5

1.html5中video支持哪些视频格式 一共支持三种格式: Ogg、MPEG4、WebM。但这三种格式对于浏览器的兼容性却各不同。 注:Internet Explorer 8 以及更早的版本不支持(h5c3) IE      Firefox      Opera      Chrome      Safari Ogg      No      3.5+       10.5+

2017-05-10 11:16:50 181

原创 面试4

1.http的请求方式  HTTP 定义了与服务器交互的不同方法,最常用的有4种,Put(增),Delete(删),Post(改),Get(查),即增删改查。 1)Get,向特定的资源发送请求。它用于获取信息,注意,他只是获取、查询数据,也就是说它不会修改服务器 上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是可以修改数据的,所以这也是两者差别之一了。 2) Post,向指

2017-05-09 07:03:06 286

原创 面试3

放个假,就断了。习惯,坚持才能成自然。 **1.移动端你是怎么布局的?** 首先移动端网页需要加入viewport <meta name="viewport" content="width=device-width,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> 一、 1>百分比自适应。将长度单位转换为百分比来表

2017-05-03 09:59:54 269

原创 复习面试题2

1.什么是闭包?你在哪里使用过? 定义:闭包就是能够读取其他函数内部变量的函数。 作用:读取函数内部的变量值;让这些变量值始终保存着(在内存中) 案例:     //闭包的坑     for (var i = 0; i setTimeout(function () {        console.log(i);   }, i*100);       }

2017-04-25 22:25:46 214

原创 换工作了,又要经历久违的面试了

写代码是一件事,面试是另一件事。从今天起,开始写技术日记,再简单的代码三天不写也容易忘,理论知识想要记住就更难了。重要的是每天坚持! 面试中很容易问到的问题(基础): 1.CSS的引入方式有哪些?(真正想问的应该是link和@import有什么差别) 引入CSS的方法主要有四种,它们分别是行内式、内嵌式、链接式和导入式。 行内式:在标记的style属性中设定CSS样式。没有体现出CSS的优

2017-04-24 11:12:39 529

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除