开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
1. 词法作用域的规则
- 访问变量时,先在自己的作用域中查找,如果没有则沿着作用域链往上找,直到全局.如果全局也没有就报错。
- 给变量赋值之前,要先找变量.查找变量也是沿着作用域链查找,直到全局,如果全局也没有,则会再全局作用域创建这个变量(隐式全局)
2. 创造对象的方式,构造函数(工厂函数的改进版)
function Person (name, age) {
this.name = name;
this.age = age;
this.sayName = function () {
console.log(this.name);
}
}
var p1 = new Person('Jack', 18);
p1.sayName() // => Jack
var p2 = new Person('Mike', 23);
p2.sayName() // => Mike
构造函数存在浪费内存的问题:
3. 解决构造函数浪费内存的方法
利用函数的原型对象
js给每一个函数,提供了一个对应的原型对象.可以通过函数的prototype属性访问到这个原型对象.
原型对象有一个constructor的属性会指向自己对应的函数
而我们通过
new 函数创建出来的实例对象,默认可以访问到函数对应的原型对象上的属性
function Person (name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayName = function (){
console.log('hello ' + this.name);
}
var p1 = new Person('Tom', 18);
var p2 = new Person('Jack', 16);
p1.sayHello(); // hello Tom
p2.sayHello(); // hello Jack
4. 试用qs.js可以用来更好的处理URL参数
- qs.parse 这是将一段字符串转换成对象格式。
- qs.stringify的基本用法与qs.parse相反,是将参数对象格式化为一个字符串。
- 处理json格式的参数,json格式的参数可以用[ ]方式编码
let json = { a: { b: { c: 'd', e: 'f' } } };
qs.stringify(json);
//结果 'a[b][c]=d&a[b][e]=f'
qs.stringify(json, {allowDots: true});
//结果 'a.b.c=d&a.b.e=f'
这个可以用于axios.post中发送嵌套对象的方法