new对象

作者: xgszl33614 | 来源:发表于2016-05-03 14:46 被阅读24次

对象new的流程

当我们使用new关键字时,我们就创建了一个对象。比如new Date();

那么,创建对象的流程是怎样呢?

  • 1.如同是用{}创建对象一样,js创建了一个类似的空对象。
  • 2.然后针对该对象调用指定的构造函数,这里就是Date了,构造函数的this即指向该空对象,构造函数给该对象添加了属性和方法。(构造函数一般不会有返回值)。这个新对象就是整个对象创建表达式的返回值。
    ——构造函数给对象添加属性和方法?那原型干什么,实例对象不是都继承了原型吗,原型没有对实例对象做点什么吗?创建实例对象时,实例对象的 [[Prototype]] 属性会指向构造函数的原型,所以是通过这种方式继承原型的。
  • 3.如果构造函数返回了一个对象呢,那么该对象为整个对象创建表达式的返回值。并且最初的{}对象废弃掉。(jquery对象就是用这种方式创建,我们使用jquery就不需要使用new jQuery了)。
    ——注意:此时创建的对象将不是该构造函数的实例。即:
function A() {
    this.name = "abc";
    return {
        xingming:"bbc";
    }
}
var a = new A();
a instanceof A;//false
A.prototype.isPrototypeOf(a);//false

new + function

创建对象时new的肯定是构造函数了,是函数。
创建对象时,会将对象的[[Prototype]]内置属性指向,构造函数的原型(prototype)。

实际上:a instanceof b;判断a对象是否是b构造函数的实例 的内部过程是:判断a中 [[Prototype]] 所指向的是否是构造函数b的prototype(原型)。所以,类(采用其他oop语言的说法)的真实的唯一的标识是构造函数的原型。

相关文章

  • new对象

    虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用...

  • new对象

    对象new的流程 当我们使用new关键字时,我们就创建了一个对象。比如new Date(); 那么,创建对象的流程...

  • NEW对象 NEW2017

    0. 前言 2017年,又开始了新的一年,新的一年了,你是否依旧很骄傲的说自己是"单身狗",是不是在2016年12...

  • Java中的对象

    使用对象的步骤:1、创建对象类名 对象名 = new 类名();TestClass phone = new Tes...

  • JavaScript 日期、日期格式化、时间计时器

    1. 日期对象的几种常见参数 new Date() // 当前时间对象new Date(十三位时间戳)new Da...

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

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

  • 26.1 匿名对象2020-01-20

    平时创建对象格式为: Person one=new Person(); 那么匿名对象就是无名字对象 格式为 new...

  • 关于new Image()的应用

    基本用法 var a = new Image();建立图像对象:图像对象名称=new Image([宽度],[高度...

  • JavaScript 纯粹对象

    JavaScript 纯粹对象1、定义:通过 "{}" 或者 "new Object" 创建的对象,像new Da...

  • 源码时代前端干货分享|new关键字底层原理-执行过程

    构造对象关键字:new 众所周知,js是用new来产生对象的,那么今天我们就来说说js里new产生对象的构造原理。...

网友评论

      本文标题:new对象

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