随笔分类 - JS
摘要:本文转载:https://www.cnblogs.com/liugang-vip/p/5616484.html#!comments js中的事件冒泡、事件委托是js 中一些需要注意的小知识点,这里结合转载文章总结一下: 事件冒泡:JS中当出发某些具有冒泡性质的事件是,首先在触发元素寻找是否有相应的注
阅读全文
摘要:本文转载:https://www.cnblogs.com/echolun/p/7889848.html 深拷贝和浅拷贝简单说:就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。 我们来举个浅拷贝例子: 嗯?明明b复制了
阅读全文
摘要:1. 能力检测(特性检测)——检测浏览器是否具有某些特性 a.先检测达成目的最常用的特性,保证代码最优化 b.必须检测实际使用的特性 1)更可靠的能力检测:能力检测中仅检测某个特性是否存在是不可靠的,更可靠的方式是检测确定他是否会真正按照我们想要的方式行事,(列如我们检测某个对象是否支持排序,仅检测
阅读全文
摘要:1.window对象 window是BOM的核心,它既是JS访问浏览器的一个接口,又是ES规定的Global对象。 1)全局作用域对象 a.所有在全局作用域中声明的变量、函数都会成为window对象的属性和方法。 b.定义全局变量与在window对象上直接定义属性还是有一点差别:全局变量不能通过de
阅读全文
摘要:函数表达式是一种函数的定义方式,在JS中能够利用它结合闭包实现很多功能。不过,因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。 函数定义方式: 1)函数声明:这种方式在代码执行之前会准备到在执行上下文中,所以可以把函数声明放在调用之后,叫做函数声明提升。 2)函数表达式:使用这
阅读全文
摘要:ES中没有类的概念,这也使其对象和其他语言中的对象有所不同,ES中定义对象为:“无序属性的集合,其属性包含基本值、对象或者函数”。现在常用的创建单个对象的方法为对象字面量形式。在常见多个对象时,使用工程模式的一种变体。 1.理解对象 1)对象的属性分两种:数据属性和访问器属性,每个类型的属性都具有相
阅读全文
摘要:五大浏览器-四大内核 浏览器四大内核:Trident内核(俗称IE内核) WebKit内核:apple、谷歌、Adobe 共同推动开发的内核 Blink内核:谷歌家放弃Webkit后基于Webkit自己开发的内核,Opera浏览器也在共同采用和开发 Gecko内核(俗称Firefox内核) 以下是各
阅读全文
摘要:在JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined?Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefin
阅读全文
摘要:深入理解js原型和闭包笔记: 1.“一切皆是对象”,对象是属性的集合。 丨 函数也是对象,但是使用typeof时为什么函数返回function而 丨 不是object呢,js为何要对函数做这样的区分?函数和对象到底什么关系呢? 2.函数和对象的关系(对象是函数创建的,但同时函数又是一种对象) 丨 对
阅读全文
摘要:本系列用了大量的篇幅讲解了上下文环境和作用域,有些人反映这两个是一回儿事。本文就用一个小例子来说明一下,作用域和上下文环境绝对不是一回事儿。 再说明之前,咱们先用简单的语言来概括一下这两个的区别。 00 上下文环境: 可以理解为一个看不见摸不着的对象(有若干个属性),虽然看不见摸不着,但确实实实在在
阅读全文
摘要:本文对《深入理解js原型和闭包(10)——this》一篇进行补充,原文链接:https://www.cnblogs.com/lauzhishuai/p/10078307.html 原文中,讲解了在javascript中this的各个情况,写完之后发现还落下一种情况,就此补充。 原文中this的其中一
阅读全文
摘要:之前一共用15篇文章,把javascript的原型和闭包讲解了一下。 首先,javascript本来就“不容易学”。不是说它有多难,而是学习它的人,往往都是在学会了其他语言之后,又学javascript。有其他语言的学习经历和实践经历,再加上自学javascript,边学边用,肯定会产生许多误解,走
阅读全文
摘要:前面提到的上下文环境和作用域的知识,除了了解这些知识之外,还是理解闭包的基础。 至于“闭包”这个词的概念的文字描述,确实不好解释,我看过很多遍,但是现在还是记不住。 但是你只需要知道应用的两种情况即可——函数作为返回值,函数作为参数传递。 第一,函数作为返回值 如上代码,bar函数作为返回值,赋值给
阅读全文
摘要:先解释一下什么是“自由变量”。 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。如下图 如上程序中,在调用fn()函数时,函数体中第6行。取b的值就直接可以在fn作用域中取,因为b就是在这里定义的。而取x的值时,就需要到另一个作用域中
阅读全文
摘要:上文简单介绍了作用域,本文把作用域和上下文环境结合起来说一下,会理解的更深一些。 如上图,我们在上文中已经介绍了,除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时确定。 下面我们将按照程序执行的顺序,一步一步把各个上下文环境加上。另外,对上下文环境
阅读全文
摘要:提到作用域,有一句话大家(有js开发经验者)可能比较熟悉:“javascript没有块级作用域”。所谓“块”,就是大括号“{}”中间的语句。例如if语句: 再比如for语句: 所以,我们在编写代码的时候,不要在“块”里面声明变量,要在代码的一开始就声明好了。以避免发生歧义。如: 其实,你光知道“ja
阅读全文
摘要:继续上文的内容。 执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境。当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境。处于活动状态的执行上下文环境只有一个。 其实这是一个压栈出栈的过程——执行上下文栈。如下图: 可根据以下代码来详细介绍
阅读全文
摘要:接着上一节讲的话,应该轮到“执行上下文栈”了,但是这里不得不插入一节,把this说一下。因为this很重要,js的面试题如果不出几个与this有关的,那出题者都不合格。 其实,this的取值,分四种情况。我们来挨个看一下。 在此再强调一遍一个非常重要的知识点:在函数中this到底取何值,是在函数真正
阅读全文
摘要:继续上一篇文章(https://www.cnblogs.com/lauzhishuai/p/10078231.html)的内容。 上一篇我们讲到在全局环境下的代码段中,执行上下文环境中有如何数据: 变量、函数表达式——变量声明,默认赋值为undefined; this——赋值; 函数声明——赋值;
阅读全文
摘要:什么是“执行上下文”(也叫做“执行上下文环境”)?暂且不下定义,先看一段代码: 第一句报错,a未定义,很正常。第二句、第三句输出都是undefined,说明浏览器在执行console.log(a)时,已经知道了a是undefined,但却不知道a是10(第三句中)。 在一段js代码拿过来真正一句一句
阅读全文

浙公网安备 33010602011771号