唯一指定邮箱:penglianger@qq.com

祝你健康平安幸福快乐

银之匙


  • 首页
  • 归档
  • 分类
  • 标签
  •     

© 2025 pengliang

Theme Typography by Makito

Proudly published with Hexo

桂ICP备20004211号-1

new

发布于 2021-01-21 JavaScript  new 

前言

JavaScript 的 new 运算符干了啥?
自己写一遍加深一下。


用法

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;

  return {
    abc: "js",
  };
}

const car1 = new Car("Eagle", "Talon TSi", 1993);

console.log(car1.abc);
// expected output: "js"

console.log(car1.make);
// expected output: "undefined"

实际

function myNew(fun) {
  // 空对象
  let obj = Object.create(null);

  // 设置原型链
  obj.__proto__ = fun.prototype;

  // 让Func中的this指向obj。
  // 执行Func的函数体,看看有没有对象返回。
  const res = fun.call(obj);

  if (typeof res !== "objcet") {
    // 大部分情况下走这里
    return obj;
  } else {
    // fun返回的是一个对象的时候,new 也把这个对象返回出去
    // 结合 console.log(car1.abc); 很清晰
    return res;
  }
}

结束

果然自己写一遍就是不一样! 🤣🤣🤣

 上一篇: 乡村的氛围 下一篇: 实现Promise 

© 2025 pengliang

Theme Typography by Makito

Proudly published with Hexo

桂ICP备20004211号-1