cchroot's blog


  • 首页

  • 文章树

  • 分类

  • 标签

  • 关于

  • javascript

  • vue.js

  • react.js

  • node.js

  • java

  • linux

  • arithmetic

  • tool

你不知道的javascript——混合对象“类”

发表于 2018-05-02 | 分类于 读书笔记
上一章介绍了对象,这章自然要介绍和类相关的面向对象编程。在研究类的具体机制之前,我们首先会介绍面向类的设计模式:实例化(instantiation)、继承(inheritance)和(相对)多态(polymorphism)。 我们将会看到,这些概念实际上无法直接对应到 JavaScript 的对象机制,因此我们会介绍许多 JavaScript 开发者所使用的解决方法(比如混入,mixin)。 4.1 类理论类 / 继承描述了一种代码的组织结构形式——一种在软件中对真实世界中问题领域的建模方法。 面向对象编程强调的是数据和操作数据的行为本质上是互相关联的(当然,不同的数据有不同的行为),因此好的设计就是把数据以及和它相关的行为打包(或者说封装)起来。这在正式的计算机科学中有时被称为数据结构。 举例来说,用来表示一 ...
阅读全文 »

JS运行机制

发表于 2018-05-01 | 分类于 javascript
从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 前言:今年年初的时候,在掘金上面看到了讲解JS运行机制的文章《从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理》,作者dailc,甚是喜欢,今天在动车上闲来无事,翻着原来收藏和喜欢的文章,又看了一遍觉得真的是非常棒,解决了很多我原来不清楚和模糊的概念。在这里跟转录跟大家分享一下,一来希望可以让更多人看见,二来自己也可以加深巩固一下,以下开始为文章内容。 ———-正文开始———- 最近发现有不少介绍JS单线程运行机制的文章,但是发现很多都仅仅是介绍某一部分的知识,而且各个地方的说法还不统一,容易造成困惑。因此准备梳理这块知识点,结合已有的认知,基于网上的大量参考资料,从浏览器多进程到JS单线程,将JS引擎的运行机制系统的梳理一遍。 展现形式:由于是 ...
阅读全文 »

你不知道的javascript——对象

发表于 2018-04-30 | 分类于 读书笔记
3.1 语法对象可以通过两种形式定义:声明(文字)形式和构造形式。 对象的文字语法大概是这样: 1234var myObj = { key: value // ...}; 构造形式大概是这样: 12var myObj = new Object();myObj.key = value; 构造形式和文字形式生成的对象是一样的。唯一的区别是,在文字声明中你可以添加多个键 / 值对,但是在构造形式中你必须逐个添加属性。 3.2 类型对象是 JavaScript 的基础。在 JavaScript 中一共有六种主要类型(术语是“语言类型”): string number boolean null undefined object 注意,简单基本类型(string、boolean、number、n ...
阅读全文 »

有用的20个正则表达式

发表于 2018-04-30 | 分类于 javascript
前言在知乎上翻看着原来收藏的文章,看到了这篇有关正则的文章: https://zhuanlan.zhihu.com/p/29163295 ,觉得值得收藏。加上最近刚好复习了一下正则表达式,趁热打铁再加深一下映像,也方便以后查找使用。并且前面几个我会附上便于理解的解析图,以便于大家理解。以下为正文: 正文正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的 JavaScript 代码: 1var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d ...
阅读全文 »

你不知道的javascript——this全面解析

发表于 2018-04-29 | 分类于 读书笔记
每个函数的 this 是在调用时被绑定的,完全取决于函数的调用位置(也就是函数的调用方法)。 2.1 调用位置在理解 this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而不是声明的位置)。 最重要的是要分析调用栈(就是为了到达当前执行位置所调用的所有函数)。我们关心的调用位置就在当前正在执行的函数的前一个调用中。 下面我们来看看到底什么是调用栈和调用位置: 123456789101112131415161718function baz() { // 当前调用栈是:baz // 因此,当前调用位置是全局作用域 console.log( "baz" ); bar(); // <-- bar 的调用位置}function bar() { ...
阅读全文 »

forEach()和map()的区别

发表于 2018-04-28 | 分类于 javascript
相同点 都是循环遍历数组中的每一项 forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组) 匿名函数中的this都是指向window 只能遍历数组 1.map()方法map定义和用法: map方法返回一个新的数组,数组中的元素为原始数组调用函数处理后的值; 我的理解就是:原数组进行处理之后对应的一个新的数组。相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了)。 map()方法按照原始数组元素顺序依次处理元素; 注意:map()方法不会对空数组进行检测。 map()方法不会改变原始数组。 浏览器支持: chrome、safari、opera都支持,IE:>= ...
阅读全文 »

你不知道的javascript——关于this

发表于 2018-04-28 | 分类于 读书笔记
1.1 为什么要用this我们来解释一下为什么要使用 this: 1234567891011121314151617181920function identify() { return this.name.toUpperCase();}function speak() { var greeting = "Hello, I'm " + identify.call( this ); console.log( greeting );}var me = { name: "Kyle"};var you = { name: "Reader"};identify.call( me ); // KYLEidentify.call( you ...
阅读全文 »

XSS 与 CSRF 两种跨站攻击

发表于 2018-04-27 | 分类于 webSafety
听说很早的时候,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式。在这个年代, 参数化查询已经成了普遍用法,我们已经离 SQL 注入很远了。但是,历史同样悠久的 XSS 和 CSRF 却没有远离我们。对于XSS,我们需要项目中对用户输入的数据小心的对待,如果输入的时候没有经过 Tidy 之类的过滤,一定要在模板输出时候全部转义。剩下就是CSRF了,下面对比一下两种跨站点攻击。 XSS:脚本中的不速之客XSS 全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运 ...
阅读全文 »

你不知道的javascript——动态作用域与this词法

发表于 2018-04-26 | 分类于 读书笔记
动态作用域第 2 章中,我们对比了动态作用域和词法作用域模型,JavaScript 中的作用域就是词法作用域(事实上大部分语言都是基于词法作用域的)。 我们会简要地分析一下动态作用域,重申它与词法作用域的区别。但实际上动态作用域是JavaScript 另一个重要机制 this 的表亲,本书第二部分“this 和对象原型”中会有详细介绍。 从第 2 章中可知,词法作用域是一套关于引擎如何寻找变量以及会在何处找到变量的规则。词法作用域最重要的特征是它的定义过程发生在代码的书写阶段(假设你没有使用eval() 或 with)。 动态作用域似乎暗示有很好的理由让作用域作为一个在运行时就被动态确定的形式,而不是在写代码时进行静态确定的形式,事实上也是这样的。我们通过示例代码来说明: 123456789function f ...
阅读全文 »

你不知道的javascript——作用域闭包

发表于 2018-04-23 | 分类于 读书笔记
JavaScript中闭包无处不在,你只需要能够识别并拥抱它。 有兴趣的同學可以先看看我原來的一篇关于閉包的文章重温——作用域与闭包,两篇文章有共同涉及的地方,也有独到的地方,相信看完你会更加理解闭包的概念。 5.2实质问题当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。 下面用一些代码来解释这个定义: 12345678function foo() { var a = 2; function bar() { console.log( a ); // 2 } bar();}foo(); 这段代码看起来和嵌套作用域中的示例代码很相似。基于词法作用域的查找规则,函数bar() 可以访问外部作用域中的变量 a(这个例子中的是一个 RHS ...
阅读全文 »
1…91011…17
cchroot

cchroot

Your bloom is the reason of the breeze

163 日志
16 分类
21 标签
GitHub Juejin LeetCode
© 2023 cchroot
个人专属
|
主题 — NexT.Pisces v5.1.4