- 博客(170)
- 资源 (19)
- 收藏
- 关注
原创 《每天十分钟》-红宝书第4版-函数
事实上,在使用 function 关键字定义(非箭头)函数时,可以在函数内部访问 arguments 对象,从中取得传进来的每个参数值。arguments 对象是一个类数组对象(但不是 Array 的实例),因此可以使用中括号语法访问其中的元素(第一个参数是 arguments[0],第二个参数是 arguments[1])。你可以传一个、三个,甚至一个也不传,解释器都不会报错。如果函数是使用箭头语法定义的,那么传给函数的参数将不能使用 arguments 关键字访问,而只能通过定义的命名参数访问。
2024-07-12 20:06:14
368
原创 《每天十分钟》-红宝书第4版-代理与反射(二)
代理可以定义包含捕获器的处理程序对象,而这些捕获器可以拦截绝大部分 JavaScript 的基本操作和方法。与代理如影随形的反射 API,则封装了一整套与捕获器拦截的操作相对应的方法。开发者使用它可以创建出各种编码模式,比如(但远远不限于)跟踪属性访问、隐藏属性、阻止修改或删除属性、函数参数验证、构造函数参数验证、数据绑定,以及可观察对象。代理可以拦截反射 API 的操作,而这意味着完全可以创建一个代理,通过它去代理另一个代理。其实一个走的是构造函数,一个是触发的 set ,而不同的this 导致的。
2024-06-15 19:10:09
442
原创 《每天十分钟》-红宝书第4版-代理与反射
使用代理的主要目的是可以定义捕获器(trap)。捕获器就是在处理程序对象中定义的“基本操作的拦截器”。每个处理程序对象可以包含零个或多个捕获器,每个捕获器都对应一种基本操作,可以直接或间接在代理对象上调用。每次在代理对象上调用这些基本操作时,代理可以在这些操作传播到目标对象之前先调用捕获器函数,从而拦截并修改相应的行为。例如,可以定义一个 get()捕获器,在 ECMAScript 操作以某种形式调用 get()时触发。
2024-05-31 17:25:44
800
原创 《每天十分钟》-红宝书第4版-对象、类与面向对象编程(八)
混入模式可以通过在一个表达式中连缀多个混入元素来实现,这个表达式最终会解析为一个可以被继承的类。如果 Person 类需要组合 A、B、C,则需要某种机制实现 B 继承 A,C 继承 B,而 Person再继承 C,从而把 A、B、C 组合到这个超类中。一个策略是定义一组“可嵌套”的函数,每个函数分别接收一个超类作为参数,而将混入类定义为这个参数的子类,并返回这个类。类的语法让开发者可以优雅地定义向后兼容的类,既可以继承内置类型,也可以继承自定义类型。虽然类继承使用的是新语法,但背后依旧使用的是原型链。
2024-05-04 22:13:50
812
原创 《每天十分钟》-红宝书第4版-对象、类与面向对象编程(六)
上节提到原型包含引用值导致的继承问题,为了解决这种问题,一种叫作“盗用构造函数”(constructor stealing)的技术在开发社区流行起来(这种技术有时也称作“对象伪装”或“经典继承”)。因为毕竟函数就是在特定上下文中执行代码的简单对象,所以可以使用apply()和 call()方法以新创建的对象为上下文执行构造函数。基本的思路是使用原型链继承原型上的属性和方法,而通过盗用构造函数继承实例属性。组合继承弥补了原型链和盗用构造函数的不足,是 JavaScript 中使用最多的继承模式。
2024-03-27 22:43:07
538
原创 《每天十分钟》-红宝书第4版-对象、类与面向对象编程(五)
而上面的写法完全重写了默认的 prototype 对象,因此其 constructor 属性也指向了完全不同的新对象(Object 构造函数),不再指向原来的构造函数。因为实例和原型之间的链接就是简单的指针,而不是保存的副本,所以会在原型上找到sayHi属性并返回这个属性保存的函数。前面在谈到原型的问题时也提到过,原型中包含的引用值会在所有实例间共享,这也是为什么属性通常会在构造函数中定义而不会定义在原型上的原因。通过原生对象的原型可以取得所有默认方法的引用,也可以给原生类型的实例定义新的方法。
2024-03-24 22:33:23
775
原创 《每天十分钟》-红宝书第4版-对象、类与面向对象编程(四)
如果没有找到这个属性,则搜索会沿着指针进入原型对象,然后在原型对象上找到属性后,再返回对应的值。于是就返回了保存在原型上的这个函数。在 ECMAScript 6 新增符号类型之后,相应地出现了增加一个 Object.getOwnPropertyNames()的兄弟方法的需求,因为以符号为键的属性没有名称的概念。在单独使用时,in 操作符会在可以通过对象访问指定属性时返回 true,无论该属性是在实例上还是在原型上。与原型对象中同名的属性,那就会在实例上创建这个属性,这个属性会遮住原型对象上的属性。
2024-03-16 22:20:01
617
原创 《每天十分钟》-红宝书第4版-对象、类与面向对象编程(三)
脚本中没有访问这个[[Prototype]]特性的标准方式,但 Firefox、Safari 和 Chrome会在每个对象上暴露__proto__属性,通过这个属性可以访问对象的原型。每个函数都会创建一个 prototype 属性,这个属性是一个对象,包含应该由特定引用类型的实例共享的属性和方法。实际上,这个对象就是通过调用构造函数创建的对象的原型。ECMAScript 的 Object 类型有一个方法叫 Object.getPrototypeOf(),返回参数的内部特性[[Prototype]]的值。
2024-03-07 23:09:05
688
原创 《每天十分钟》-红宝书第4版-对象、类与面向对象编程(二)
和面向对象相关的内容开始了,认真抄,用了很多年 ,要多思考。ECMAScript 5.1 并没有正式支持面向对象的结构,比如类或继承。ECMAScript 6 开始正式支持类和继承。ES6 的类旨在完全涵盖之前规范设计的基于原型的继承模式。
2024-02-06 14:32:45
803
原创 《每天十分钟》-红宝书第4版-对象、类与面向对象编程
ECMA-262 将对象定义为一组属性的无序集合。ECMAScript 的对象想象成一张散列表,其中的内容就是一组名/值对,值可以是数据或者函数。
2024-02-05 19:27:10
716
原创 《每天十分钟》-红宝书第4版-迭代器与生成器(二)
生成器的形式是一个函数,这个函数比较特殊,它拥有在一个函数块内暂停和恢复代码执行的能力。函数名称前面加一个星号(*) 这就表示它是一个生成器了标识生成器函数的星号不受两侧空格的影响调用生成器函数会产生一个生成器对象。生成器对象一开始处于暂停执行(suspended)的状态。与迭代器相似,生成器对象也实现了 Iterator 接口,因此具有 next()方法。调用这个方法会让生成器开始或恢复执行。
2024-01-31 20:33:40
405
原创 《每天十分钟》-红宝书第4版-迭代器与生成器
/ Counter 的实例应该迭代 limit 次next() {} else {// 1// 2// 3这个类实现了 Iterator 接口,但不理想。// 1// 2// 3为了让一个可迭代对象能够创建多个迭代器,必须每创建一个迭代器就对应一个新计数器。为此,return {next() {} else {// 1// 2// 3// 1// 2// 3每个以这种方式创建的迭代器也实现了 Iterable 接口。// true。
2024-01-25 19:47:16
774
原创 《每天十分钟》-红宝书第4版-集合引用类型(四)- Set
使用Set时,需要考虑几个地方。某些 Set 操作是有关联性的,因此最好让实现的方法能支持处理任意多个集合实例。Set 保留插入顺序,所有方法返回的集合必须保证顺序。尽可能高效地使用内存。扩展操作符的语法很简洁,但尽可能避免集合和数组间的相互转换能够节省对象初始化成本。不要修改已有的集合实例。union(a, b)或 a.union(b)应该返回包含结果的新集合实例。
2024-01-24 11:15:46
835
原创 《每天十分钟》-红宝书第4版-集合引用类型(四)- Map
JS中实现“键/值”式存储可以使用 Object 来方便高效地完成,TC39 委员会专门为“键/值”存储定义了一个规范,于是就有了Map。
2024-01-23 14:15:22
967
原创 《每天十分钟》-红宝书第4版-集合引用类型
实际上,在我们开发项目的过程中,框架搭建好之后,日常还是和各种类型的变量打交道,所以要写出严谨的代码还是要对常用的变量逐一学习,面试过程中也通常会被问一些api的理解,或者在解决问题过程中熟练使用api。
2024-01-12 12:35:37
810
原创 《每天十分钟》-红宝书第4版-基本引用类型
JavaScript 中的对象称为引用值,几种内置的引用类型可用于创建特定类型的对象。引用值与传统面向对象编程语言中的类相似,但实现不同。Date 类型提供关于日期和时间的信息,包括当前日期、时间及相关计算。RegExp 类型是 ECMAScript 支持正则表达式的接口,提供了大多数基础的和部分高级的正则表达式功能。JavaScript 比较独特的一点是,函数实际上是 Function 类型的实例,也就是说函数也是对象。因为函数也是对象,所以函数也有方法,可以用于增强其能力。
2024-01-10 14:13:22
929
原创 《每天十分钟》-红宝书第4版-性能
在使用垃圾回收的编程环境中,开发者通常无须关心内存管理。分配给浏览器的内存通常比分配给桌面软件的要少很多,分配给移动浏览器的就更少了。要避免这种动态分配操作,可以在初始化时就创建一个大小够用的数组,从而避免上述先删除再创建的操作。V8 会在后台配置,让这两个类实例共享相同的隐藏类,因为这两个实例共享同一个构造函数和原型。由于 JavaScript 数组的大小是动态可变的,引擎会删除大小为 100 的数组,再创建一个新的大小为。矢量对象的生命周期很短,那么它会很快失去所有对它的引用,成为可以被回收的值。
2024-01-03 19:05:33
899
原创 《每天十分钟》-红宝书第4版-执行上下文与作用域
先阅读一段晦涩难懂的文字执行上下文(以下简称“上下文”)的概念在 JavaScript 中是颇为重要的。变量或函数的上下文决定 了它们可以访问哪些数据,以及它们的行为。每个上下文都有一个关联的变量对象(variable object), 而这个上下文中定义的所有变量和函数都存在于这个对象上。虽然无法通过代码访问变量对象,但后台 处理数据会用到它。全局上下文是最外层的上下文。根据 ECMAScript 实现的宿主环境,表示全局上下文的对象可能不一 样。
2023-12-31 22:52:33
903
原创 《每天十分钟》-红宝书第4版-语言基础-数据类型(五)
根 据 接 收 到 的 对 象 类 型 选 择 如 何 将 一 个 类 数 组 对 象 拼 接 成 数 组 实 例。该用 Array.prototype.concat()打平其数组元素”。ES6 中的 Array.prototype.concat()方法会。只操作一个值的操作符叫一元操作符(unary operator)。一元操作符是 ECMAScript 中最简单的操作符。这个符号作为一个属性表示“一个布尔值,如果是 true,则意味着对象应。最近刀郎出了新专辑《山歌寥哉》不错~
2023-08-04 22:29:56
474
原创 《每天十分钟》-红宝书第4版-语言基础-数据类型(四)
对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性的键名。Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。竹深树密虫鸣处,时有微凉不是风。杨万里杨万里〔宋代〕
2023-07-24 13:08:24
107
原创 《每天十分钟》-红宝书第4版-语言基础-数据类型(三)
Symbol.keyFor() 可以查询某个全局符号在全局注册表中的描述字符串,但参数必须是个符号类型否则异常。注意:在全局注册表中定义的符号和使用普通 Symbol()定义的符号 即使描述一致,值也不一样。此方法会检查全局运行时注册表是否存在对应的符号,不存在创建并放到全局中,存在就返回该实例。在运行的上下文中需要共享一个符号实例的时候可以 使用 Symbol.for() 方法。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。符号是原始值,且符号实例是唯一、不可变的。
2023-07-19 22:46:43
79
原创 《每天十分钟》-红宝书第4版-语言基础-数据类型(二)
此方法规则也很简单和 parseInt 一致,有个特殊情况它始终忽略字符串开头的0,所以它遇到16进制 0x 会始终返回0,也就是说 parseFloat() 只能处理16进制。从第一个非空格字符开始转换。如果第一个字符不是数值字符**、加号或减号**,parseInt()立即返回 NaN。这意味着空字符串也会返回 NaN(这一点跟 Number()不一样,它返回 0)。,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符。未觉池塘春草梦,阶前梧叶已秋声。又到了欣赏古诗时间😄。
2023-07-15 21:58:45
188
原创 《每天十分钟》-红宝书第4版-语言基础-数据类型(一)
答:JS 浮点值的精确度最高可达 17 位小数,0.1的二进制表示的是一个无限循环小数,JS对这个小数的二进制进行截取前17位,截取之后0.1不再是0.1,截取之后0.1变成了 0.100…任何无法表示的负数以-Infinity(负无穷大)表示,任何无法表示的正数以 Infinity(正无穷大)表示。默认情况下,ECMAScript 会将小数点后至少包含 6 个零的浮点值转换为科学记数法(例如,0.000 000 3 会被转换为 3e-7)。这是因为特殊值 null 被认为是一个对空对象的引用。
2023-07-08 23:43:13
287
原创 《每天十分钟》-红宝书第4版-HTML 中的 JavaScript
使用元素将 JavaScript 插入 HTML是给页面添加灵魂的最直接方式。这个元素是由网景公司创造被加入到 HTML 规范,网景对于前端想个什么词来形容呢,混沌初开,开山鼻祖,女娲造人…元素目前规定了8 个属性。我们按照添加方式或者加载执行顺序不同逐个了解。
2023-07-02 15:16:58
744
原创 《每天十分钟》-红宝书第4版-什么是JavaScript
天下大事,分久必合”,1997年,JavaScript 1.1作为提案被提交给欧洲计算机制造商协会(Ecma),第39技术委员会(TC39)承担了制定统一脚本语言和语义的任务(TC39委员会由来自网景、Sun、微软、Borland 、Nombas 和其他对这门脚本语言有兴趣的公司的工程师组成。有网景公司的推广,有很牛的浏览器加持,web正处于风口期,就这样天时地利人和的条件下,由于JavaScript 1.0很成功,网景又在Netscape Navigator 3中发布了1.1版本。
2023-06-30 19:39:46
203
原创 手机端调试html5
ios手机调试:手机端配置:设置 -> safari浏览器 -> 高级 -> 打开JavaScript & Web检查器pc端配置:safari浏览器 选择开发 -> xx的MacBook Pro -> 自动显示JSContext 的网页检查器安卓手机调试:手机端环境: ##### 非微信环境安装谷歌浏览器打开开发者模式 (请根据不同机型自行百度)谷歌浏览器 输入访问地址微信环境微信中访问 http://debugx5.qq.com.
2021-10-09 11:08:18
741
原创 快速使用Docker 挂载本机目录搭建开发环境
命令含义不再详细介绍,参考具体帮助文档开发环境使用:多个项目统一的目录 ~/workspace创建 aha-php-fpmdocker run --name aha-php-fpm -v ~/workspace:/www --privileged=true -d php:7.1-fpm创建 aha-php-nginxdocker run --name aha-php-nginx -p 80:80 -d \ --privileged=true \ -v ~/work
2021-10-09 10:45:21
159
原创 简单项目分支控制
分支说明master分支:存储正式发布的产品,master 分支上的产品要求随时处于可部署状态。master 分支只能通过与其他分支合并来更新内容,禁止直接在 master 分支进行修改。develop分支:汇总开发者完成的工作成果,develop 分支上的产品可以是缺失功能模块的半成品,但是已有的功能模块不能是半成品。(例:ios 送审版本)sprint分支:当要开发产品线新功能或者试验新功能时,从 master 分支创建一个新的 sprint 分支,并在 sprint 分支上进行开发。开发完成.
2021-10-08 17:38:27
321
原创 前端网站性能指标
FP(First Paint)页面在导航后首次呈现出不同于导航前内容的时间点。通过浏览器的 window.performance.getEntriesByName(‘first-paint’)可以获取。FCP(First Conentful Paint)首次绘制任何文本,图像,非空白canvas或SVG的时间点。通过浏览器的 window.performance.getEntriesByName(‘first-contentful-paint’)可以获取。First Meaningful Pai
2021-10-08 17:10:14
552
原创 前端异常捕获
前端异常的分类1. 语法错误 SyntaxError触发场景:(1)变量名错误 (2)缺少括号影响会影响页面加载,var 1a; //(1)console.log'hello'); //(2)
2021-10-08 16:59:22
592
原创 UML图
UML-Unified Modeling Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言[百度百科]1、用例图(UseCase Diagrams):用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。2、类图(Class Diagr...
2019-10-10 22:51:32
271
原创 构建自己的脚手架
当我们愉快的使用vue-cli 的时候可能会想到他是如何帮我们生成目录的参考了scion 感谢 scion - 什么时候需要脚手架 - 脚手架的原理 - 技术栈项目开始从零开始搭建项目结构,尤其是公司内一些增长运营的短期项目,有可能生命周期短,频繁新建项目,这时候脚手架可以帮助我们迅速创建结构如果你了解过yeoman,并用yeoman 生成过项目,那么可以思考一下生成...
2018-08-28 20:17:30
2389
原创 持续集成流程设计(自动化布署)
如上图,bitbucket 也可以替换为其他git 仓库,比如gitlab 也可以搭建自己的服务端打包工具中 FIS/GULP 也可以替换为 webpack
2018-05-17 14:49:58
1073
java使用 httpclient 访问wcf 用到的 jar包(包括json jar)
2013-03-08
.net Reflector 7.5.4.20.zip
2012-09-07
Newtonsoft.Json.dll,Newtonsoft.Json.xml
2011-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人