读书笔记
容景
这个作者很懒,什么都没留下…
展开
-
call 和 apply 的模拟实现—— JavaScript
callcall 方法在使用一个指定的 this 和若干个参数的情况下调用某个函数或方法。例如:<script> let foo = { value: "foo" }; function pri() { console.log(this.value); } pri.call(foo); //foo</script>模拟实现要注意以下:(1)call 改变了 pri 的 this 的.原创 2020-11-22 11:11:32 · 235 阅读 · 0 评论 -
var、let、const 的区别(作用域、提升、重复声明等)——JavaScript
let 和 const 是 es6 推出的声明变量的关键字。个人觉得这三个关键字最大的区别就是作用域和提升。(1)作用域var 声明的范围是函数作用域,let 和 const 声明的范围是块作用域。 { var varT = "var"; } console.log(varT); //var { let letT = "let"; } console.log(letT); //Uncaught ReferenceError: letT i原创 2020-11-14 09:29:24 · 507 阅读 · 0 评论 -
对象深拷贝的简单实现——JavaScript
深拷贝是相对于浅拷贝而言的,深拷贝与浅拷贝最大的不同就是对于引用类型的拷贝。浅拷贝:在修改新对象的引用类型时,原对象也会改变。(只是增加了一个指针指向已存在的内存地址)深拷贝:新对象与原对象完全独立,即修改新对象的属性时,原对象不会改变。(增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存)所以深拷贝的重点就是对于引用类型的拷贝。以下是深拷贝的简单实现:<!DOCTYPE html><html> <head> <meta原创 2020-11-11 11:27:46 · 285 阅读 · 3 评论 -
执行上下文之 this——JavaScript
this 是执行上下文中的一个重要属性,是一个与执行上下文相关的特殊对象,可以看作是一个另类的上下文对象。this 在标准函数中,引用的是把函数当成方法调用的上下文对象。而在箭头函数中,this 引用的是定义箭头函数的上下文。一般情况下,this 的绑定要到函数调用时才确定,下面是4种常见绑定规则:1.作为一般函数执行时,this 绑定到全局对象(非严格模式下),严格模式下 this 会绑定到 undefined。var a = "global";function foo() {原创 2020-11-04 23:09:35 · 278 阅读 · 1 评论 -
执行上下文之作用域链——JavaScript
1原创 2020-11-03 22:04:21 · 72 阅读 · 0 评论 -
执行上下文之变量对象——JavaScript
执行上下文(Execution Context):当 JavaScript 代码执行的时候,会进入不同的执行上下文,这个上下文决定了变量或者函数可以访问哪些数据,以及他们的行为。变量对象(Variable Object):每个上下文都有一个关联的变量对象,上下文中定义的所有变量和函数都存在于这个对象上。一般 VO 会包含以下信息:变量(Variable Declaration)函数声明(Function Declaration)函数的形参当 JavaScript 代码试图查找原创 2020-10-29 10:41:34 · 131 阅读 · 0 评论 -
错误类型——JavaScript
前言:代码执行过程中会发生各种类型的错误,每种类型对应一个错误发生时抛出的错误对象。ECMA-262 定义了以下 8 种错误类型:ErrorInternalErrorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIErrorError:Error 是基类型,其他错误类型继承该类型,因此所有错误类型都共享相同的属性。该类型主要用于开发者抛出自定义错误InternalError:Inter原创 2020-10-28 21:37:04 · 233 阅读 · 0 评论 -
变量提升与函数提升——JavaScript
变量提升:使用 var 操作符定义的变量会成为包含它的函数的局部变量,同时这个变量会自动提升到函数作用域顶部。function foo() { console.log(age); var age = 25;}foo(); //undefined之所以不会报错,是因为 ECMAScript 运行时把它看成等价于如下代码:function foo() { var age; console.log(age); age = 26;}foo()原创 2020-10-28 20:50:55 · 241 阅读 · 0 评论 -
前端跨域——JavaScript
什么是跨域:跨域是浏览器的一个特性,就是浏览器从一个“域”向另一个“域”的服务器发出请求,来访问另一个“域”上的资源。但是,由于请求的文件可能会存在恶意攻击,浏览器并不允许直接访问另一个“域”上的资源,只能访问同一个“域”上的资源,这个就是“同源策略”。而所谓的“同源”,指的是“协议、域名、端口号”一致跨域方案:CORS(跨域资源共享):CORS定义了浏览器与服务器如何实现跨源通信。它背后的基本思路是使用自定义的 http 头部允许浏览器和服务器互相了解,以确实请求或响应应该成功还是失败原创 2020-10-27 22:11:44 · 105 阅读 · 1 评论 -
JavaScript——原型链
原型链基本构想:ECMA-262 把原型链定义为 ECMAScript 的主要继承方式,其基本思想就是通过原型继承多个引用类型的属性和方法。function fat() { this.attr = true;}fat.prototype.getFatName = function() { return this.attr;};function son() { this.sonAttr = false;}//继承 fatson.prototype = ne原创 2020-10-15 21:02:45 · 82 阅读 · 0 评论 -
JavaScript——原型
什么是原型:在 JavaScript 中,每个函数都会创建一个 prototype 属性,这个属性是一个对象,包含应该由特点引用类型的实例共享的属性和方法。实际上这个对象就是通过调用构造函数创建的对象的原型。原型的用处:在原型对象上定义的属性和方法可以被对象实例共享。function Person() {};Person.prototype.name = "Nick";Person.prototype.sayName = function() { console.log(th原创 2020-10-15 20:04:49 · 79 阅读 · 0 评论 -
JavaScript——闭包理解
闭包是什么:指有权访问另外一个函数作用域中的变量的函数。function A() { let num = 100; function B() { alert(num); } eturn B();}let C = A;C(); //100如上,B 就是一个闭包,它引用了父函数 A 中的变量 num。闭包用处:(1)读取函数内部变量(如上所示)(2)让变量的值始终保存在内存中function A() { let原创 2020-10-14 21:07:27 · 178 阅读 · 1 评论 -
第十章 函数篇(三)(JavaScript高级程序设计-读书笔记)
1.函数声明与函数表达式:JavaScript引擎在加载数据时对函数声明和函数表达式是区别对待的。函数声明:JavaScript引擎在任何代码执行之前,会先读取函数声明,并在执行上下文中生成函数定义。函数表达式:函数表达式必须等到代码执行到它那一行,才会在执行上下文中生成函数定义。console.log(sum(10, 10));function sum(num1, num2) { return num1 + num2;}//没问题以上代码可以正常运行,因为函数声明会在任原创 2020-10-04 12:47:06 · 137 阅读 · 0 评论 -
第十章 函数篇(二)(JavaScript高级程序设计-读书笔记)
关于函数参数:1.理解参数:ECMAScript函数既不关心传入的参数个数,也不关心这些参数的数据类型。定义函数时要接收两个参数,并不意味着调用时就传两个参数,可以传一个、三个,甚至一个也不传,解释器都不会报错。之所以会这样,主要是因为ECMAScript函数的参数在内部表现为一个数组。函数被调用时总会接收一个数组,但函数并不关心这个数组中包含什么,数组中没有元素或者元素超出了要求,也没问题。事实上,在使用function关键字定义(非箭头)函数时,可以在函数内部访问arguments对原创 2020-10-03 22:13:05 · 147 阅读 · 0 评论 -
JavaScript的一些名词(持续更新中-取自javaScript高级程序设计)
严格模式(p22):ECMAScript 5增加了严格模式的概念。严格模式是一种不同的JavaScript解析和执行模型。ECMAScript 3的一些不规范写法在这种模式下会被处理,对于不安全的活动将抛出错误,要对整个脚本启用严格模式,在脚本开头加上:"use strict";严格模式会影响JavaScript执行的很多方面,所有现代浏览器都支持严格模式。提升(p25):把所有变量声明都拉到函数作用域的顶部。暂时性死区(p26):在解析代码时,JavaScript引擎会注意出现在块原创 2020-10-03 16:20:56 · 1971 阅读 · 3 评论 -
第十章 函数篇(一)(JavaScript高级程序设计-读书笔记)
1.定义函数在JavaScript中,函数实际上是对象。每个函数都是Function类型的实例,而Function也有属性和方法,跟其他引用类型一样。因为函数是对象,所以函数名就是指向函数对象的指针,而且不一定与函数本身紧密绑定。常见的定义函数的方式:(1)...原创 2020-10-02 12:53:43 · 294 阅读 · 0 评论