![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
你不知道JavaScript笔记
fonglezen
web前端开发妹子一枚
展开
-
《你不知道的JavaScript(上卷)》笔记:this全面解析-绑定规则
调用位置调用位置就是函数在代码中被调用的位置,而不是声明的位置;最重要的是 分析调用栈;注意是如何从调用栈中分析出真正的调用位置的,它决定了this的绑定;我们关心的调用位置就在当前正在执行的函数的前一个调用中:function baz() { // 当前调用栈是:baz // 因此,当前调用位置是全局作用域 console.log("baz"); ...原创 2018-03-10 15:25:50 · 145 阅读 · 0 评论 -
ES6 迭代器
1、ES6实现的是为迭代器引入一个隐式的标准化接口。 2、为了达到最大化的互操作性,也可以自己构建符合这个标准的迭代器。 3、迭代器是一种有序的、连续的、基于拉取的用于消耗数据的组织方式。 4、接口 Iterator [required] next() {method}: 取得下一个IteratorResultIterator [optional] return (...原创 2018-06-17 16:55:52 · 431 阅读 · 0 评论 -
《你不知道的JavaScript2》异步-Promise
/** * Promise 章节代码片段 */ // :1 异步获取x,y,当两个都有值的时候再做运算function add(getX, getY, cb){ var x, y; getX(function(xVal){ x = xVal; if(y != undefined){ cb(x+y); ...原创 2018-04-07 12:58:26 · 369 阅读 · 0 评论 -
《你不知道的JavaScript2》:异步-概念引入
一些常见的需要异步处理的场景 等地用户输入从数据库或文件系统中请求数据通过网络发送数据并等待响应以固定时间间隔执行重复任务(例如动画)JavaScript是单线程运行的...原创 2018-04-01 20:47:38 · 166 阅读 · 0 评论 -
《你不知道的JavaScript2》-对象与类
1、[[Prototype]]机制就是指对象中的一个内部链接引用另一个对象。 2、本质就是:对象之间的关联关系。 3、尽量避免在[[Prototype]]链的不同级别中使用相同的命名,尽量少使用容易被重写的通用方法名,提倡使用更有描述性的方法名,尤其少要写清相应对象行为的类型。 4、委托行为意味着某些对象在找到属性或者方法引用时会把这个请求委托给另一个对象。 5、委托最好在内部实现,不要直...原创 2018-04-08 15:08:21 · 256 阅读 · 0 评论 -
《你不知道的JavaScript2》值
1、我们无法自行决定使用值复制还是引用复制,一切由值的类型来决定。 2、slice()不带参数会返回丹铅数组的一个浅副本。 3、简单标量基本类型值通过值复制来赋值/传递 4、复合值通过引用复制来赋值/传递...原创 2018-04-08 14:57:02 · 206 阅读 · 0 评论 -
《你不知道的JavaScript2》数字
a.toExponential() 转化为指数格式 a.toFixed() 指定小数部分的显示位数 a.toPrecision() 有效数位的显示位数原创 2018-04-08 14:54:40 · 158 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:遍历对象
Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。// simple arrayvar arr = ['a', 'b', 'c'];console.log(Object.keys(arr)); // console: ['0', '1', '2']// array like ob...原创 2018-03-13 21:03:07 · 156 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:对象不变性
对象常量 结合writable:false和configurable:false就可以创建一个真正的常量属性(不可修改,重定义或者删除)禁止修改 禁止一个对象添加新属性并且保留已有属性,使用 Object.preventExtensions() 在非严格模式,创建属性b会静默失败。 严格模式下,抛出TypeError错误。var myObject = { a:2}Ob...原创 2018-03-13 20:24:34 · 169 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:对象属性描述符
var myObject = { a:2}console.log(Object.getOwnPropertyDescriptor(myObject, "a"));结果:{ value: 2, writable: true, enumerable: true, configurable: true }属性描述符value 属性值writable :决定是否可以修...原创 2018-03-13 20:16:10 · 138 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:对象基础知识
JavaScript主要类型stringnumberbooleannullundefinedobjectJavaScript内置对象StringNumberBooleanObjectFunctionArrayDateRegExpError在JavaScript中,内置对象指数一些内置函数,可以当作构造函数(由new产生的函数调用)来使用,从而可以构造一个对应...原创 2018-03-13 20:07:27 · 151 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:关于this
this提供了一种更优雅的方式来隐式“传递”一个对象引用,因此可以将API设计得更加简洁并且易于复用。function identify() { return this.name.toUpperCase();}function speak() { var greeting = "Hello, I'm " + identify.call( this ); conso...原创 2018-03-05 22:26:05 · 170 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:作用域闭包
当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。 function foo() { var a = 2; function bar(){ console.log(a); } return bar; ...原创 2018-03-04 11:35:05 · 352 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:词法作用域
词法作用域词法作用域:定义在词法阶段的作用域。词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的。函数作用域:如论函数何时被调用,也无论函数在何处被调用,函数的词法作用域都由函数被声明时所处的位置决定。词法作用域只会查找一级标志符,比如a\b\c,如果代码饮用了foo.bar.baz,词法作用域查找只会试图查找foo标志符, 找到这个变量后,对象属性访问规则会分别接管对bar和...原创 2018-03-04 09:38:07 · 177 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:提升
2a = 2;var a;console.log(a); // 2undefinedconsole.log(2); // undefinedvar a = 2;函数被提升foo();function foo() { console.log( a ); //undefined var a = 2;}相当于:function foo() { ...原创 2018-03-04 18:18:35 · 183 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:函数作用域和块作用域
函数作用域:属于这个函数的全部变量都可以在整个函数的范围内使用及复用。最小暴露原则:应该最小限度地暴露必要内容,而将其他内容都“隐藏”起来,比如某个模块或对象的API设计。始终给函数表达式命名,是一个最佳实践。匿名函数需要考虑的几个方面匿名函数咋栈追踪不会显示有意义的函数名,使得调试困难;如果没有函数名,当函数需要引用自身只能使用已经过期的arguments.callee引用,比如在...原创 2018-03-04 17:44:26 · 191 阅读 · 0 评论 -
《你不知道的JavaScript(上卷)》笔记:箭头函数的this
箭头函数根据外层(函数或者全局)作用域来决定this。function foo() { // 返回一个箭头函数 return (a) => { // this继承自foo() console.log(this.a); }}var obj1 = { a: 2}var obj2 = { a: 3}v...原创 2018-03-11 15:52:20 · 147 阅读 · 0 评论 -
ES6生成器
1、生成器可以在执行当中暂停自身,可以立即恢复执行,也可以过一段时间后恢复执行,在执行当中的每次暂停/恢复,都提供了一个双向信息传递的机会,生成器可以返回一个值,恢复它的控制代码也可以发回一个值。 2、生成器语法function *fun(){}// orfunction* fun() {}function * fun() {}function*fun() {}3、对象字面...原创 2018-06-18 14:33:54 · 342 阅读 · 0 评论