JavaScript
张子溪
前端工程师
展开
-
JavaScript面试题总结系列(九)
9. JavaScript - ES6+介绍一、var let const 区别:使用 var 声明的变量,可以变量提升;使用let、 const声明的变量,没有变量提升;二、 临时死区(Temporal Dead Zone)与var不同,let和const声明的变量不会被提升到作用域顶部。因此,如果在声明之前访问这些变量,就会引发错误。例如:if (condition) {...原创 2019-11-14 14:47:06 · 165 阅读 · 0 评论 -
JavaScript面试题总结系列(八)
8. JavaScript - this对象this对象this总是指向函数的直接调用者(而非间接调用者)如果有new关键字,this指向new出来的那个对象在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window对于匿名函数或者直接调用的函数来说,this指向全局上下文(浏览器为window,NodeJS...原创 2019-11-14 11:28:34 · 147 阅读 · 0 评论 -
JavaScript面试题总结系列(七)
7.JavaScript闭包概念闭包是函数,是能够读取其他函数内部变量的函数。例如:函数 A 返回了一个函数 B,并且函数 B 中使用了函数 A 的变量,函数 B 就被称为闭包。特性函数内部再嵌套函数内部函数可以引用外层函数的参数和变量内部函数的参数和变量不会被垃圾回收机制回收作用读取函数内部的变量让这些变量始终保持在内存中,实现缓存避免全局变量的污染使用闭包主要是为了...原创 2019-10-27 11:51:59 · 144 阅读 · 0 评论 -
JavaScript面试题总结系列(六)
6.JavaScript作用域作用域概念简单地说,作用域就是在上下文中,变量与函数的可访问范围。它可以分为块级作用域和函数作用域。作用作用域控制着变量与函数的可见性和生命周期。作用域链概念作用域链可以理解为一组对象列表,包含父级和自身的变量对象,因此我们便能通过作用域链访问到父级里声明的变量或者函数。作用作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链...原创 2019-10-27 11:00:25 · 185 阅读 · 0 评论 -
JavaScript面试题总结系列(五)
5.JavaScript继承继承是什么A对象通过继承B对象,就能直接拥有B对象的所有属性和方法。方式一、原型链继承核心:子类型的原型为父类型的一个实例对象 // 创建一个父类(注意其本质仍然是一个构造函数) function Parent() { this.name='kevin'; } // 创建父类上的一个共享方法 Parent...原创 2019-10-25 12:10:53 · 312 阅读 · 0 评论 -
JavaScript面试题总结系列(四)
4.JavaScript原型和原型链4.1 概念介绍原型和原型对象原型也是对象,叫原型对象。所以,原型和原型对象是一回事,只不过有人说的简洁,有人说的是全称。 原型链原型(原型对象)、构造函数和(对象)实例构成了原型链。原型链的核心就是依赖对象的__proto__指向,当检索依赖对象本身不存在的属性时,就会一层一层地向上去查找创建对象的构造函数,一直找到Object,就没有...原创 2019-10-24 20:35:27 · 144 阅读 · 0 评论 -
JavaScript面试题总结系列(三)
3. JavaScript数组3.1 数组常用方法map: 遍历数组,返回回调函数返回值组成的新数组,不改变原数组forEach:无法break,可以用try/catch中throw new Error来停止filter:过滤some:有一项返回true,则整体为trueevery:有一项返回false,则整体为falsejoin:通过指定连接符生成字符串push / pop:末...原创 2019-10-23 12:02:28 · 205 阅读 · 0 评论 -
JavaScript面试题总结系列(二)
2. JavaScript对象2.1 内置对象Object是JavaScript中所有对象的父对象;数据封装类对象:Object、Array、Boolean、Number、String;其他对象:Function、Arguments、Math、Date、RegExp、Error、JSON、全局对象;2.2 定义对象的方式对象字面量: var obj = {};构造函数: var...原创 2019-10-22 15:09:28 · 156 阅读 · 0 评论 -
JavaScript面试题总结系列(一)
JavaScript数据类型说起面试,做技术的人应该都有一种感觉,那就是工作的时候用到的东西都可以去查,但是当别人直接问一个问题时,让你在不去查询的情况下,当即做回答,还是有一定难度的。尤其是面试的时候,很多程序员能力不缺,但是让你当即说出来或者当场手写代码的时候,往往容易卡壳。笔者也有类似的经历,遂决定从今天起,写一些面试题总结以及对面试的思考。欢迎对面试有兴趣的同行一起来探讨,共同进步。1...原创 2019-10-21 21:30:00 · 171 阅读 · 0 评论 -
读书笔记:深入理解ES6 (附录B)
附录B:了解ES7(2016) ES6经历了4年的发展,之后TC-39决定将发布周期转换为每年一版,以确保新语言特性能够更快地发展。 ES6中添加了三个语法特性,下面一一来讲。第1节 指数运算符 1. 在之前的时候,可以通过 Math.pow() 方法来执行求幂运算,但这毕竟是一个方法,一些开发者更希望通过操作符就可以实现这个功能。所以在ES6中,使用了两个星号 “**...原创 2019-09-15 16:10:11 · 154 阅读 · 0 评论 -
读书笔记:深入理解ES6 (附录A)
附录A:ES6中较小的改动第1节 使用整数 JavaScript 使用 IEEE 754 编码系统来表示整数和浮点数,多年来这给开发者造成了不少混乱。ES6力图通过降低整数的识别和使用的难度来解决这些问题。 1. 由于浮点数和整数的存储方式不同,Number.isInteger() 方法利用了这种存储的差异来确定该值是否为整数。 2. 只给数字添加小数点不会让整数变为浮...原创 2019-09-15 15:22:37 · 128 阅读 · 0 评论 -
读书笔记:深入理解ES6 (十三)
第十三章 用模块封装代码 其他语言使用诸如包这样的概念来定义代码作用域,在ES6以前,Javascript用“共享一切”的方法加载代码,定义的一切都共享一个全局作用域,随着Web应用程序更加复杂,代码量的增加,这一做法会引起命名冲突、安全问题等。 ES6的一个目标是解决作用域问题,也为了让程序显得有序,于是引入了模块。第1节 什么是模块? 1. 模块的定义 模块...原创 2019-09-15 12:18:55 · 129 阅读 · 0 评论 -
关于MVC的自我理解
做前端有一段时间了。工作中就一直在用MVC这个组织结构。现在总结一下我自己的理解吧,有不妥之处,还请指点。我的思维通常是,要用一个东西,首先要认识这个东西,也就是所说的认知能力吧。所以,开头先把今天的题目拆开来讲,每个字母都代表了什么。M -- Model, 即模型;V -- View,即视图;C -- Controller, 即控制器。好,现在展开来一原创 2015-09-19 20:51:48 · 589 阅读 · 0 评论 -
雅虎十四条:网站前端网页优化的14条原则
内容再丰富的网站,如果慢到无法访问也是毫无意义的;SEO做的再好的网站,如果搜索蜘蛛抓不到也是白搭;UE设计的再人性化的网站,如果用户连看都看不到也是空谈。所以,网页的效率优化绝对是最值得关注的方面,那么,我们该如何才能提高一个网页的效率呢?对此,我今天就在马海祥博客上为大家分享一下雅虎网页优化的14条原则,也被称为:雅虎十四条,而这些原则也是我们作为一名SEO人员所必须了解的。转载 2016-08-22 16:00:00 · 345 阅读 · 0 评论 -
比较Undefined 和 null
今晚读了AngularJS高级程序设计这本书中的几页内容,摘录其中的几句话作为记录。JavaScript定义了两个特别的值:undefined 和 null. 当读取没有赋值的变量或试图取不存在的对象属性时会返回undefined. Null值与undefined稍有不同。当值没有定义时返回undefined, 而当你想指出你赋了值但值不是有效的对象、字符原创 2016-12-30 21:41:33 · 400 阅读 · 0 评论 -
前端杂谈 - 怎样让自己成为JavaScript大牛
前端观察 2015-09-12 11:52在成长的过程中,我的兴趣点不断发散,而且都是看似不相关的领域。我喜欢数学正如我喜欢历史一样。我的目标是成为一个 多才多艺的人 – 博学者-,能在多个领域成为优秀人才。这证实是一项艰巨的任务,我忽然面临着行行皆通,样样稀松的危险。我开始考虑专注于某些领域,这样即使不能成为像文艺复兴时期的通才,但至少能精通某些方面。那我怎么样才转载 2016-12-30 21:49:37 · 526 阅读 · 0 评论 -
JavaScript中常用的循环方法
今天终于把JavaScript中数组的三种方式凑齐了。一、 for() 循环,这个是最常见的,包括于但不限于JavaScript。例子不在此举了;二、for in 循环,... for ( x in arr ) { // do something }; .. 这个例子中,x 就是数组中具体的每一项;三、forEach()循环,... forEach( element, index, a原创 2016-11-20 22:20:58 · 696 阅读 · 0 评论 -
读书笔记:深入理解ES6 (五)
第五章 解构:使数据访问更便捷第1节 为什么使用解构功能? 在ES5中,开发者们从对象、数组中获取特定数据并赋值给变量,编写了很多看起来同质化的代码。例如:let options = { repeat: true, save: false}; //从对象中提取数据let repeat = options.repeat, save = options...原创 2019-09-04 12:09:48 · 166 阅读 · 0 评论 -
读书笔记:深入理解ES6 (八)
第八章 迭代器(Iterator)与生成器(Generator)第1节 循环语句的问题 在循环、多重循环中,通过变量来跟踪数组索引的行为容易导致程序出错。迭代器的出现旨在消除这种复杂性,并减少循环中的错误。第2节 什么是迭代器? 迭代器是一种特殊对象。它有一些专门为迭代过程设计的专有接口。例如:next( )方法,该方法用于返回一个结果对象。结果对象有两个属性:va...原创 2019-09-11 21:02:36 · 145 阅读 · 0 评论 -
读书笔记:深入理解ES6(十一)
第十一章 Promise与异步编程 Promise可以实现其他语言中类似Future和Deferred一样的功能,是另一种异步编程的选择,它既可以像事件和回调函数一样指定稍后执行的代码,也可以明确指示代码是否成功执行。第1节 异步编程的背景知识 1. 机制 JavaScript引擎是基于单线程(Single-threaded)事件循环的概念构建,即同一时刻只允许一个...原创 2019-09-14 12:34:13 · 137 阅读 · 0 评论 -
读书笔记:深入理解ES6 (十二)
第十二章 代理(Proxy)和反射(Reflection)API ES6添加了一些内建对象,赋予开发者更多访问JavaScript引擎的能力。代理(Proxy)是一种可以拦截并改变底层 JavaScript 引擎操作的包装器,在新语言中,通过它暴露内部运作的对象。第1节 数组问题 在ES6出现以前,开发者不能通过自己定义的对象模仿 JavaScript 数组对象的行为方式。但...原创 2019-09-14 18:20:28 · 147 阅读 · 0 评论 -
关于call()和apply()方法的一点心得
1. 这两个是JS原生方法;2. 自我理解:这个给“懒人”准备的方法;3. 举例(重点)://example 1:function Person(name, age) { this.name = name; this.age = age; } function Student() {原创 2015-06-10 22:08:24 · 1104 阅读 · 0 评论