• new一个对象的过程


    使用new关键字调用函数(new ClassA(…))的具体步骤:

    1. 创建空对象;
      var obj = {};

    2. 设置新对象的constructor属性为构造函数的名称,设置新对象的__proto__属性指向构造函数的prototype对象;
      obj._ proto_ = ClassA.prototype;

    3. 使用新对象调用函数,函数中的this被指向新实例对象:
      ClassA.call(obj);  //{}.构造函数();

    4. 将初始化完毕的新对象地址,保存到等号左边的变量中

    注意:若构造函数中返回this或返回值是基本类型(number、string、boolean、null、undefined)的值,则返回新实例对象;若返回值是引用类型的值,则实际返回值为这个引用类型。

    1 function Person(name, age) {
    2   this.name = name;
    3   this.age = age;
    4 }
    5 var person = new Person("Alice", 23);

    new一个对象的四个过程:

    1、创建一个空对象

    var obj = new Object();

    2、让Person中的this指向obj,并执行Person的函数体

    var result = Person.call(obj);

    3、设置原型链,将obj的__proto__成员指向了Person函数对象的prototype成员对象

    obj.__proto__ = Person.prototype;

    4、判断Person的返回值类型,如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。

    if (typeof(result) == "object")
      person = result;
    else
      person = obj;
  • 相关阅读:
    jQuery对象和DOM对象
    虚拟主机的部署(Apache)
    事件流:事件冒泡和事件捕获
    ThinkPHP
    级联下拉列表
    今日份抽自己!!!
    c++中关于输入字符数组的一些问题
    今日新知(关于递归中变量的声明)
    格子游戏(并查集)
    1.3-14大象喝水
  • 原文地址:https://www.cnblogs.com/xfcao/p/11663282.html
Copyright © 2020-2023  润新知