zoukankan      html  css  js  c++  java
  • JavaScript高级(03_对象高级)

    对象的创建模式

    • Object构造函数模式

      var obj = {};
      obj.name = 'Tom'
      obj.setName = function(name){this.name=name}
    • 对象字面量模式

      var obj = {};
      obj.name = 'Tom'
      obj.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;
        this.setName = function(name){this.name=name;};
      }
      new Person('tom', 12);

    继承模式

    • 原型链继承 : 得到方法

      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;
        this.setName = function(name){this.name=name;};
      }
      new Person('tom', 12);
    • 组合

      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

      • 执行构造函数体(给对象添加属性/方法)

  • 相关阅读:
    HTML学习笔记-框架(40)
    HTML学习笔记-使用div和table进行布局(36)
    MVC初体验-EF系列(总结)(23)
    MVC初体验-EF系列(延迟加载)(22)
    MVC初体验-EF系列(状态跟踪的修改)(21)
    MVC初体验-EF系列(CRUD)(20)
    回收站清空后立马恢复
    软件体验记录
    复杂网络,抽象语法树
    PHP修改记录
  • 原文地址:https://www.cnblogs.com/lich1x/p/13696364.html
Copyright © 2011-2022 走看看