首页 文章详情

面试官问:new的过程发生了什么?

前端人 | 464 2021-03-30 11:12 0 0 0
UniSMS (合一短信)


关注公众号 前端人,回复“加群

添加无广告优质学习群

今天的题目介绍:

【虾皮一卷#02题】,每周题目周六统一录入文末小程序中!

代码实例

function User(userName{
    this.userName = userName;
}
const user = new User("鬼哥");
  1. 创建空对象;
var obj = {};
  1. 设置新对象的 constructor 属性为构造函数的名称,设置新对象的__proto__属性指向构造函数的 prototype 对象;
obj.__proto__ = User.prototype;
  1. 使用新对象调用函数,函数中的 this 被指向新实例对象:
User.call(obj); //{}.构造函数();
  1. 如果无返回值或者返回一个非对象值,则将新对象返回;如果返回值是一个新对象的话那么直接直接返回该对象。
if (typeof(result) == "object") {
    user = result;
else {
    user = obj;
}

参考资料

  • https://my.oschina.net/qiilee/blog/4915319
  • https://developer.aliyun.com/ask/258926

最后

关注公众号,置顶公众号,鬼哥每天解答一道大厂面试题,一起前端进阶

  1. 公众号里回复关键词资料包领取我整理的进阶资料包
  2. 公众号里回复关键词加群,加入前端进阶群
  3. 文章点个在看,支持一下把!

点击关注我们↓

题库小程序

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter