zoukankan      html  css  js  c++  java
  • 面向对象

    创建对象:

      new运算符: 1. 执行函数    2. 自动创建一个空对象  3. 把空对象指向另一个对象    4. this绑定到这个空对象   5. 隐式返还this 

    原型链:  链上都是对象,有限长度 (终点是 null)

      var obj = new Object();

      var Tab = function (){}

      var tab1 = new Tab();

      1.  访问对象原型:obj.__proto__

      2. 构造函数访问原型:Tab.prototype 

      3. 原型链: tab1.__proto__      (tab1.__proto__).__proto__      ((tab1.__proto__).__proto__ ).__proto__ 【Tab.prototype  Object  null 】

      4. 原型链的终点是: null  (会不会很惊讶)

    构造函数判断类型:

      tab1.__proto__.constructor.name  // Tab

      tab1.__proto__.__proto__.constructor.name  // Object

      tab1.__proto__.__proto__ .__proto__  // null    Object.prototype.__proto__ == null

    工厂模式:  像产品一样生产对象,函数return一个对象

      function createObj( name, age  ){

        var obj = new Object();

        obj.name = name;

        obj.age = age;

        return obj;

      }

    构造函数模式: 

      方法一: var obj = new Object(); // 构建原生对象

      方法二:

        function Product( name ){

          // var obj = new Object();  隐式创建空对象  且  this绑定到这个空对象

          this.name = name;

          this.num = 0;

          // return this;   隐式返还 this

        };

        Product.prototype.add = function(){  // Product.prototype 创建了一个公共空间

          this.num++;

          console.log(this.num);

        };

        // Product.prototype  对象,默认只有一个属性  constructor;  可以往对象里添加新的属性

         Product.prototype.constructor  === Product   // true  任何对象都有它的构造函数,任何函数的原型都是对象

        // 获得构造函数的原型:  Product.prototype;

        var prod1 = new Product(); 

        var prod2 = new Product();

        // Object.prototype.__proto_  === null

      // 类的继承, 在现有类的基础上定义新的类 (类共享数据结构的机制) --- 放在day03

      // 类的继承包含两部分: 构造函数内定义的属性   和  构造函数原型上定义的方法    ---> 属性 和 方法的继承

    // 仿照一个 new 运算符  ---- myNew函数

    function myNew( constructor, ...arg ){  --> 参数: 构造函数 和 参数

      let obj = {};

      constructor.call( obj, ...arg );

      obj.__proto__ = constructor.prototype;

      return obj;

    }

        

      

      

      

  • 相关阅读:
    《网络是怎样连接的》读书笔记一
    移植mplayer到开发板
    解决ubuntu安装ssh服务无法打开解析包问题
    嵌入式软件工程师面经
    c语言-数组、指针面试题
    Linux命令- echo、grep 、重定向、1>&2、2>&1的介绍
    回调函数的作用
    数据结构-单链表回环函数判断
    算法-一步步教你如何用c语言实现堆排序(非递归)
    算法-快速排序
  • 原文地址:https://www.cnblogs.com/baota/p/12424147.html
Copyright © 2011-2022 走看看