美文网首页
关于new操作符

关于new操作符

作者: _咻咻咻咻咻 | 来源:发表于2021-01-24 13:24 被阅读0次

一 通过构造函数与class类实现一个简单的创建实例的过程

// ES5构造函数
let Parent = function (name, age) {
  this.name = name;
  this.age = age;
}
Parent.prototype.sayName = function () {
  console.log(this.name)
}
const child = new Parent('lining', 25);
child.sayName(); //'lining

// ES6 class类
class Parent {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  sayName(){
    console.log(this.name)
  }
}
const child = new Parent('echo', 25);
child.sayName(); //'echo

二 new一个对象时发生了什么

  1. 创建一个空对象,将空对象的proto指向构造函数的prototype
  2. 将this指向改为空对象,然后执行构造函数,将属性和方法挂载在空对象上
  3. 返回this指向的空对象,也就是实例
// ES5构造函数
let Parent = function (name, age) {
    //1.创建一个新对象,赋予this,这一步是隐性的,
    // let this = {};
    //2.给this指向的对象赋予构造属性
    this.name = name;
    this.age = age;
    //3.如果没有手动返回对象,则默认返回this指向的这个对象,也是隐性的
    // return this;
};
const child = new Parent();

三 实现一个new方法

let newMethod = function(Parent, ...arg){
  // 1. 以构造函数的prototype属性为原型,创建新对象
  // let child = {}; child.__proto__ = Parent.prototype;
  let child = Object.create(Parent.prototype);
  // 2. 将this指向新对象,并执行
  // Parent.call(child, ...arg)
  Parent.apply(child, arg);
  // 返回新对象
  return child;
}
const child = newMethod(Parent, 'zhangsan',19);
child.sayName() // 'zhangsan'

相关文章

  • 关于 new 操作符

    1. 为什么要有new操作符? JS 的 new 到底是干什么的? 本文指出,new 操作符其实就是个语法糖,用了...

  • 关于new操作符

    一 通过构造函数与class类实现一个简单的创建实例的过程 二 new一个对象时发生了什么 创建一个空对象,将空对...

  • 关键字new

    关于new操作符,我们最常看到的代码像这样: new操作符具体干了什么呢?我们可以用代码模拟它的行为。 创建了一个...

  • JS基础回归01:new操作符,原型和原型链

    本篇介绍 new 操作符的背后原理以及 JS 如何依赖原型形成原型链,完成继承。 new 操作符的本质 new 操...

  • js中的new关键字都干了些什么?

    new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new...

  • new

    什么是new操作符 new会生成一个实例对象,该对象的this指向该实例 实现一个new操作符

  • 关于 C++ 里的 New

    new expression : new 表达式 operator new : 操作符函数,用来分配内存. ...

  • c++_动态对象创建

    一.c语言 c语言使用malloc 来创建堆对象 二.c++ new操作符 delete操作符 如果new []...

  • new 对象 class

    new 操作符具体干了什么? 当我们new一个数据的时候,new操作符到底做了什么? 首先是创建实例对象{},th...

  • 刘铁猛C#(11)操作符详解(下)

    New 操作符 不仅是个关键字,也是操作符,用于创建实例,是实例构造器的操作符。 1)new 可以创建一个类型的实...

网友评论

      本文标题:关于new操作符

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