美文网首页让前端飞
js模拟实现new运算符功能

js模拟实现new运算符功能

作者: 前端收藏家 | 来源:发表于2020-05-24 09:34 被阅读0次

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一

示例:

function Wechat() {
  this.name = 'fedaily'
}
Wechat.prototype.getName = function() {
  return this.name
}

const wechat = new Wechat()
// wechat.name === fedaily
// wechat.getName() === fedaily

我们可以看到,实例可以访问到构造函数的属性以及原型对象上的属性。

所以我们可以模拟一下:

function newFactory() {
  var obj = new Object(),
  Constructor = [].shift.call(arguments);
  obj.__proto__ = Constructor.prototype;
  // 处理构造函数有返回值的情况
  // 返回值如果是一个object则直接返回,否则返回obj
  var ret = Constructor.apply(obj, arguments);
  return typeof ret === 'object' ? ret : obj;
};

相关文章

  • js模拟实现new运算符功能

    new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 示例: 我们可以看到,实例可以访问...

  • 实现模拟JS的new功能

    new功能是要生成一个构造函数的实例,所以在实现过程中需要我们手动创建一个空对象,对象的原型继承自构造函数。如果调...

  • 面试官问:能否模拟实现JS的call和apply方法

    之前写过两篇《面试官问:能否模拟实现JS的new操作符》和《面试官问:能否模拟实现JS的bind方法》 其中模拟b...

  • js new的模拟实现

    new new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 1、用new Object...

  • 模拟new的实现

    new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 模拟new之前,看看new实现了哪些...

  • new的模拟实现

    原文出处 JavaScript深入之new的模拟实现 new 我们在模拟 new 之前,先看看 new 实现了哪些...

  • new 功能模拟

  • js面试题--new的原理

    JS中的new操作符 和其他高级语言一样,JS中也有new运算符,我们知道new运算符是用来实例化一个类,从而在内...

  • JS new 运算符源码实现

    new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new 关键字会进行如下的操作: 1...

  • 模拟实现new

    mdn关于new运算符的介绍: new 运算符创建一个自定义对象或具有构造函数的内置对象的实例。 是不是看着有点懵...

网友评论

    本文标题:js模拟实现new运算符功能

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