zoukankan      html  css  js  c++  java
  • JS高级——对象高级

    对象的创建模式

    • Object构造函数模式
      var obj = {};
      obj.name = 'Tom'
      obj.setName = function(name){this.name=name}
      
    • 对象字面量模式
      var obj = {
        name : 'Tom',
        setName : function(name){this.name = name}
      }
      
    • 构造函数模式
      function Person(name, age) {
        this.name = name;
        this.age = age;
        this.setName = function(name){this.name=name;};
      }
      new Person('tom', 12);
      
    • 构造函数+原型的组合模式
      function Person(name, age) {
        this.name = name;
        this.age = age;
      }
      Person.prototype.setName = function(name){this.name=name;};
      new Person('tom', 12);
      

    继承模式

    • 原型链继承 : 得到方法
      function Parent(){}
      Parent.prototype.test = function(){};
      function Child(){}
      Child.prototype = new Parent(); // 子类型的原型指向父类型实例
      Child.prototype.constructor = Child
      var child = new Child(); //有test()
      
    • 借用构造函数 : 得到属性
      function Parent(xxx){this.xxx = xxx}
      Parent.prototype.test = function(){};
      function Child(xxx,yyy){
          Parent.call(this, xxx);//借用构造函数   this.Parent(xxx)
      }
      var child = new Child('a', 'b');  //child.xxx为'a', 但child没有test()
      
    • 组合
      function Parent(xxx){this.xxx = xxx}
      Parent.prototype.test = function(){};
      function Child(xxx,yyy){
          Parent.call(this, xxx);//借用构造函数   this.Parent(xxx)
      }
      Child.prototype = new Parent(); //得到test()
      var child = new Child(); //child.xxx为'a', 也有test()
      
    • new一个对象背后做了些什么?
      • 创建一个空对象
      • 给对象设置__proto__, 值为构造函数对象的prototype属性值 this.proto = Fn.prototype
      • 执行构造函数体(给对象添加属性/方法)
  • 相关阅读:
    POJ2186(有向图缩点)
    POJ3352(连通分量缩点)
    POJ1523(割点所确定的连用分量数目,tarjan算法原理理解)
    POJ3694(求割边)
    POJ3177(无向图变双连通图)
    POJ1144(割点入门题)
    maven(1)-linux环境下安装maven
    linux(10)-linux环境下jdk配置自定义环境变量/etc/profile.d以及卸载自带openjdk
    ant(1)-linux环境下安装ant
    apache(2)-linux环境下apache-httpd编译安装
  • 原文地址:https://www.cnblogs.com/lufei910/p/13324960.html
Copyright © 2011-2022 走看看