《你不知道的JS》上】的更多相关文章

好想要对象··· 函数的调用位置不同会造成this绑定对象不同.但是对象到底是什么,为什么要绑定他们呢?(可以可以,我也不太懂) 语法 对象声明有两个形式: 1.字面量 => var obj = { ... }; 2.构造形式 => var obj = new Object(); 两种形式生成的对象是一样的,唯一的区别是,在文字声明中可以添加多个键值对,构造形式只能逐个添加. 类型 JS中有六种主要类型:string.number.booleam.null.undefined.object.…
关于this 与静态词法作用域不用,this的指向动态绑定,在函数执行期间才能确定.感觉有点像C++的多态? var a = 1; var obj = { a: 2, fn: function() { console.log(this.a); } }; obj2 = { a: 3, fn: obj.fn }; //通过对象调用 this指向obj obj.fn(); //通过函数调用 this指向window setTimeout(obj.fn, 0); obj2.fn(); 这个例子很好理解,…
函数作用域 Javascript具有基于函数的作用域,每声明一个函数,都会产生一个对应的作用域. //全局作用域包含f1 function f1(a) { var b = 1; //f1作用域包含a,b,f2 function f2() { //f2有自己的 //...代码 } return a + b; } //无法从外部访问内部作用域 console.log(b); //error IIFE 如果需要封装某些变量,但同时不想多出一个函数名与调用函数,可以使用IIFE,立即执行函数. var…
JS引擎 编译与执行 Javascript引擎会在词法分析和代码生成阶段对运行性能进行优化,包含对冗余元素进行优化(例如对语句在不影响结果的情况下进行重新组合). 对于Javascript来说,大部分情况下编译发生在代码执行前的很短时间内,涉及的概念有引擎.编译器.作用域. 变量声明例如var a = 2这条表达式,编译阶段会先查询作用域是否有同名变量,如果有就忽略声明(仅仅忽略var的声明),继续编译.如果没有,会在当前作用域的变量集合中创建一个变量,命名为a. { //编译阶段找不到a 执行…
继承 mixin混合继承 function mixin(obj1, obj2) { for (var key in obj2) { //重复不复制 if (!(key in obj1)) { obj1[key] = obj2[key]; } } return obj1; } 这种复制是浅复制,对象或者数组函数等都是同一个引用,改变obj1的会同时影响obj2. 寄生继承 ... 隐式继承 子类调用fn.call(this) 深拷贝需要重新声明一个变量(对象),遍历(递归)复制,详情见我的函数技巧…
闭包定义 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行. 看一段最简单的闭包代码: function foo() { var a = 2; //闭包 function bar() { console.log(a); } return bar; } //理论上 foo执行完内部数据会被销毁 //由于闭包的作用 作用域一直保持 var baz = foo(); baz(); bar()函数可以访问foo()的作用域,通过foo()执行后,返回bar()并当…
变量声明提升 Javascript代码一般情况下是由上往下执行的,但是有些情况下不成立. a = 2; //变量声明被提升在当前作用域顶部 var a; console.log(a); console.log(b); //undefined //同样被提升 var b; 如果同时有函数声明与变量声明呢? console.log(a); //funciton a(){} var a; //函数先提升 变量后提升 因此变量的声明被忽略 function a() {} 两个函数声明呢? fn(); /…
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱:分享,是 CSS 里最闪耀的一瞥:总结,是 JavaScript 中最严谨的逻辑.经过捶打磨练,成就了本书的中文版.本书包含了函数式编程之精髓,希望可以帮助大家在学习函数式编程的道路上走的更顺畅.比心. 译者团队(排名不分先后):阿希.blueken.brucecham.cfanlife.d…
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱:分享,是 CSS 里最闪耀的一瞥:总结,是 JavaScript 中最严谨的逻辑.经过捶打磨练,成就了本书的中文版.本书包含了函数式编程之精髓,希望可以帮助大家在学习函数式编程的道路上走的更顺畅.比心. 译者团队(排名不分先后):阿希.blueken.brucecham.cfanlife.d…
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱:分享,是 CSS 里最闪耀的一瞥:总结,是 JavaScript 中最严谨的逻辑.经过捶打磨练,成就了本书的中文版.本书包含了函数式编程之精髓,希望可以帮助大家在学习函数式编程的道路上走的更顺畅.比心. 译者团队(排名不分先后):阿希.blueken.brucecham.cfanlife.d…