移动web前端高效开发:
1、块级作用域
// 块级作用域 function foo() { let scope = "function"; if (true) { let scope = "block"; //var的话会报错 !important console.log(scope); //block } console.log(scope); //function }
2、闭包
//闭包 var scope = 10; function sss(a) { //function 在声明时就已经赋值了 console.log(scope + a); } (function(sArg) { var scope = 100; sArg(5); //15 闭包 是静态的 })(sss)
js中函数是”第一类对象“,函数作为其他函数的参数或者返回值传递时,不经意间就会创建闭包。
如:定时器,事件监听或者ajax回调函数时;
使用场景:保存中间计算结果(如:fib)、实现内部变量封装(模块模式);
3、 原型&继承
var p = object.creat(o); //p.__proto__ = o ; (o没有prototype属性) class p extends o {} // p.__proto__ = o ; var p = new o (); // p.__proto__ = o.prototype ;
function Foo() {}; var o = new Foo(); o.__proto__ === Foo.prototype; Foo.prototype.constructor === Foo; o.__proto__ = o.constructor.prototype; //o.constructor === Foo; // 因为o没有consructor,所以上他的原型上去找。 //即o.constructor = o.__proto__.constructor;
4、[] ![] !![]
![]()