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 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染