zoukankan      html  css  js  c++  java
  • js 实现new操作符

    new操作符做了什么

    1. 创建一个空的对象,即{}
    2. 空对象的原型指向构造函数的原型,即设置该对象的构造函数
    3. 让this指向新创建的空对象,即新创建的对象作为this的上下文
    4. 判断返回值的类型,如果是值类型就是返回新的创建对象,如果是引用类型就返回引用类型的对象。(如果没有返回对象类型object包括Functoin, Array, Date, RegExg, Error),那么new表达式中的函数调用将返回该对象的引用)
    复制代码
    function copyNew(obj,...args){
      let newObj={};
      newObj.__proto__=obj.prototype;
      // => Object.setPtototypeOf(newObj, obj.prototype)
      // 上面的两步可以合为一步 let newObj=Object.create(obj.prototype)
      let result=obj.apply(newObj, args);
      return typeof result ==='object' ? result : newObj;
      // =>return result instanceof Object ? result : newObj  
    }
    复制代码
     

    如果要new的函数返回的是一个对象,则new出来的也是这个执行后返回的对象,否则返回创建的新的对象

  • 相关阅读:
    swf上传地址
    Nape 获取碰撞点加特效
    vbs打包exe工具
    Air打包exe
    JDK12的安装搭建
    Dubble 入门
    FastDFS 集群
    PAT Advanced 1077 Kuchiguse (20 分)
    高可用4层lvs——keepalived
    PAT Advanced 1035 Password (20 分)
  • 原文地址:https://www.cnblogs.com/wangxirui/p/13410732.html
Copyright © 2011-2022 走看看