constructor函数

不允许以字面量的形式去原型对象上添加属性

  1. class Person{
  2. constructor(name,age){
  3. this.name = name;
  4. this.age = age;
  5. }
  6. sayName(){
  7. console.log(this.name);
  8. }
  9. }
  10. Person.prototype = {
  11. sayAge(){
  12. console.log(this.age)
  13. }
  14. }
  15. var p = new Person("cheng",20);
  16. p.sayAge()

Object.assign

Object.assign可以在原型上添加多个属性

  1. class Person{
  2. constructor(name,age){
  3. this.name = name;
  4. this.age = age;
  5. }
  6. sayName(){
  7. console.log(this.name);
  8. }
  9. }
  10. Object.assign(Person.prototype,{
  11. sayAge(){
  12. console.log(this.age)
  13. },
  14. show(){
  15. console.log("show")
  16. }
  17. })
  18. var p = new Person("cheng",18);
  19. console.log(p.constructor == Person)

模拟栈

栈数据结构的特点:后进先出 例子水杯,谷仓,米袋就是栈的数据结构
1.push
2.pop //将栈顶的数据出栈
3.peek 获取栈顶的数据
4.isEmpty判断栈是否为空
5.size返回栈的长度
location路由 是以栈的数据结构去保存路由的

  1. class Stack{
  2. constructor(){
  3. this.items = [];
  4. }
  5. push(value){
  6. this.items.push(value)
  7. }
  8. pop(){
  9. return this.items.pop();
  10. }
  11. peek(){
  12. return this.items[this.items.length-1]
  13. }
  14. isEmpty(){
  15. return this.items.length==0;
  16. }
  17. size(){
  18. return this.items.length;
  19. }
  20. }
  21. var s = new Stack();
  22. s.push(8);
  23. s.push(9);
  24. console.log(s.isEmpty())