qq_40086260 2021-02-09 10:39 采纳率: 83.3%
浏览 98
已采纳

构造函数Array(..)不要求必须带new关键字。不带时,它会被自动补上 这句话怎么理解?

我选中的这句话 我不是很能理解。new关键字会在函数运行时隐式地执行this=Object.create(fn.prototype),并把这个this return出去

那么new加不加关键字执行结果肯定是不一样的 ,书中说Array不加new关键字会自动补上?仅仅因为Arrar是内置函数所以会自动补上new关键字吗,不是很理解,想请教大神一下

  • 写回答

5条回答 默认 最新

  • 天际的海浪 2021-02-09 18:43
    关注

    它就是在Array内置函数中判断如果this的的原型不是Array 则用new重新调用一下。
    类似于下面自定义对象的做法
     

    function myObj(n) {
    	if (this==undefined || this.__proto__!=myObj.prototype){
    		return new myObj(...arguments);
    	}
    	this.name = n;
    }
    myObj.prototype.fun = function () {
    	alert(this.name);
    }
    
    let a = new myObj(5);
    a.fun();
    let b = myObj(3);
    b.fun()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘