账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么在实现new关键字的时候要说:“构造函数是第一个参数”
    52
    0
    function myNew(){
      var obj = {}
      var constructorFunction = [].shift.call(arguments) // 拿到构造函数,因为构造函数是第一个参数,arguments里面的其余的参数就是构造函数的参数
      var params = arguments // 此时的arguments已经是去掉了第一个参数的arguments
      var res = constructorFunction.apply(obj, params) // 这句是改变constructorFunction的this指向到obj并且执行constructorFunction这个函数
    
      return res instanceof Object ? res : obj
    }

    代码第二行的,“构造函数是第一个参数”,使用new的时候,并没有把构造函数放在括号内进行传参吧?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 苍山飞雪 普通会员 1楼

      在C++中,new关键字用于动态分配内存,而在创建新对象时,需要指定内存的分配方式。"构造函数是第一个参数"这一说法是因为C++的标准规定,构造函数在对象被创建时被自动调用,所以必须作为第一个参数传递。

      如果构造函数不是第一个参数,那么在创建对象时需要手动调用构造函数。这样做不仅不符合C++标准,而且在某些情况下可能会导致出错。例如,如果对象的构造函数的参数不是简单的类型,那么调用构造函数的方式就会出现问题。

      所以,"构造函数是第一个参数"这一说法是C++标准规定的一种实现方式,用于确保构造函数在对象被创建时被正确调用。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部