- PS+React+webpack|教育中台pc 60%+ HTML5移动端 20% + nodejs10%;
- 进程是资源分配的基本单位,线程是执行的最小单位,同一进程不同线程可以共享进程资源。线程间切换效率更高;
- This指向:使用new操作符时,构造函数内的this就指向相应的实例化对象,即绑定this和返回对象;未使用new操作符时,为普通函数调用,全局函数内的this指向window,this没有绑定。
图片中:
- 语句 var a = Person('Tom') 将全局范围内的name变量改成了 Tom,故Person中的console.log(this.name)和console.log(name)都输出为Tom。
- Person("Tom") 相当于只是执行Person函数,里面没有返回值,所以console.log(a)的输出为undefined。
- 语句 var b = new Person('Michael') 使构造函数内的this指向相应的实例化对象,所以在console.log(b)时输出Person实例,即Person { name: 'Michael' }
输出结果:Tom Tom undefined Michael Person { name: 'Michael' }
- 继承
- ES6中的class继承将父类的原型对象作为了子类的原型对象的原型对象,所以
B.prototype.__proto__ === A.prototype; b.__proto__.__proto__ === A.prototype
输出结果:A.prototype B.prototype A A.prototype A.prototype
- 水平和垂直居中
// flex实现 .father{ display: flex; justify-content: center; align-items: center; } // 利用绝对布局 .father{ position: relative; } .son{ position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } // 同绝对布局 .father{ position: relative; } .son{ position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; }
5. switch case
var x = 0;
switch(++x){此时x=1,所以进入到case 1
case 0: ++x;
case 1: ++x;此时x=2,由于此处没有break,所以并没有跳出switch,所以顺序执行case 2,这时 ++x = 3
case 2: ++x;
}
输出结果:3 6.Object.keys() 方***返回一个由一个**给定对象**的**自身可枚举属性**组成的**数组**,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 。 - 传入对象, 返回包含对象**可枚举属性和方法**的数组
var obj = {'name': 'xiaoming', 'age': 18};
console.log(Object.keys(obj)); // ["name","age"]
- 传入字符串,返回索引值 var str = "Beijing";
console.log(Object.keys(str));
// ["0", "1", "2", "3", "4", "5", "6"]
- 传入数组,返回索引值 var arr = ["a", "b", "c"]; console.log(Object.keys(arr)); //["0", "1", "2"]
- 构造函数,返回空数组或者属性名
function Demo(name, age) { this.name = name; this.age = age; } console.log(Object.keys(Demo)); // []