美文网首页
new 创建对象发生了什么

new 创建对象发生了什么

作者: 苦苦修行 | 来源:发表于2019-12-19 14:29 被阅读0次

参考自:new创建对象的过程发生了什么

示例代码:

function Person(name) {
    this.name = name;
}
Person.hairColor = "black";
Person.prototype.say = function() {
    console.log("My name is " + this.name);
};
var john = new Person("John");
console.log(
    john.name, // "John",
    john.hairColor, // undefined
    john.height // undefined
);
john.say(); // "My name is John"
console.log(
    Person.name, // "Person"
    Person.hairColor // "black"
);
Person.say(); // Person.say is not a function

解析:

var john = new Person("John") = {
    var obj = {};
    obj.__proto__ = Person.prototype; // 此时便建立了obj对象的原型链:
    // obj->Person.prototype->Object.prototype->null
    var result = Person.call(obj,"John"); // 相当于obj.Person("John")
    return typeof result === 'object' ? result : obj; // 如果无返回值或者返回一个非对象值,则将obj返回作为新对象
}

相关文章

  • new 创建对象发生了什么

    参考自:new创建对象的过程发生了什么 示例代码: 解析:

  • JS中new详解

    new对象底层发生了什么 new 一个实例对象的底层实际就3步 1.创建一个 Object 对象 2.让新创建的对...

  • 面向对象

    var object = new Object() 时,发生了什么? 创建一个空对象作为 this this.__...

  • 深入理解 Function constructor - java

    使用new关键字发生了什么使用new 关键字就是新创建一个对象。 调用这个方程发生了什么调用方程之后,就会执行方程...

  • 构造方法

    是否想过创建对象时发生了什么?例如 Person p = new Person(); 是在做什么? 答案是在调用类...

  • 3. new背后发生了什么-对象创建

    概述 上一节分析了类加载时会把class文件中静态数据结构(包括常量池、方法表(方法字节码指令)、字段表等)转化为...

  • 面向对象、this

    1.var object = new Object() 时,发生了什么? 1.创建一个空对象作为 this2.th...

  • js基础题

    1.new 一个对象,都发生了什么: (1)创建一个空对象,作为将要返回的对象实例。 (2)将这个空对象的原型,指...

  • (GeekBand)C++设计模式 第二周学习笔记

    Factory Method模式 “对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中...

  • Java创建对象的过程简介

    Java创建对象的过程 简单记录一下Java创建对象的过程,就是new一个对象的时候发生了哪些事情。Java程序执...

网友评论

      本文标题:new 创建对象发生了什么

      本文链接:https://www.haomeiwen.com/subject/ksexuctx.html