zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    setTimeout的时间设为0的问题
    nodejs的简单服务器程序
    使用Promise规定来处理ajax请求的结果
    使用myfocus制作焦点图
    给Array添加删除重复元素函数
    css派生选择器
    Javascript 参数传递
    Node.js 搞Javascript开发的无论如何要尝试一下
    CSS九宫格带边框的多种实现
    80%人会答错的JS基础面试题
  • 原文地址:https://www.cnblogs.com/xfcao/p/11663282.html
Copyright © 2011-2022 走看看