new 一个对象的过程中发生了什么

简介: new 一个对象的过程中发生了什么


function Person(name) {
    this.name = name;
}
var person = new Person("qilei");


new一个对象的四个过程:


// 1.创建空对象;
var obj = {};
// 2.设置原型链: 设置新对象的 constructor 属性为构造函数的名称,设置新对象的__proto__属性指向构造函数的 prototype 对象;
obj.constructor = Person;
obj.__proto__ = Person.prototype;
// 3.改变this指向:使用新对象调用函数,函数中的 this 指向新实例对象obj:
var result = Person.call(obj); //{}.构造函数();
// 4.返回值:如果无返回值或者返回一个非对象值,则将新对象返回;如果返回值是一个新对象的话那么直接返回该对象。
if (typeof(result) == "object") {
    person = result;
} else {
    person = obj;
}


相关文章
|
1月前
对象的优化
对象的优化
|
1月前
|
编译器 数据安全/隐私保护 C++
【类与对象】封装&对象的初始化及清理
【类与对象】封装&对象的初始化及清理
|
1月前
new 一个对象的过程中发生了什么
new 一个对象的过程中发生了什么
13 2
|
10月前
|
JavaScript 前端开发
如何把一个对象变成可迭代对象?
如何把一个对象变成可迭代对象?
|
1月前
|
Java
JVM new一个对象过程
【1月更文挑战第4天】JVM new一个对象过程
|
存储 安全 Java
详解java对象创建的过程
java对象是怎么从代码变成一块内存空间的呢?只看代码层面我们只是使用了new关键字加上调用构造器,就生成了一个对象,然后我们就可以使用这个对象了,那么虚拟机在这当中究竟是怎么实现这个过程的呢,在这里我们一起学习下这个过程。
187 0
详解java对象创建的过程
|
JavaScript 前端开发 索引
带你手写一个对象,深入理解可迭代对象是什么,与类数组有什么区别
带你手写一个对象,深入理解可迭代对象是什么,与类数组有什么区别
148 0
带你手写一个对象,深入理解可迭代对象是什么,与类数组有什么区别
|
安全 Java 程序员
避免创建不必要的对象
在Java开发中,程序员要尽可能的避免创建相同的功能的对象,因为这样既消耗内存,又影响程序运行速度。在这种情况下可以考虑重复利用对象。
342 0
避免创建不必要的对象