zoukankan      html  css  js  c++  java
  • js 创建(new)一个对象的过程

    1: 对象字面量的方式
    let o = {}
    2: 通过Object.create()
    let o = Object.create({})
    3: 通过new 构造函数的方式
    let o = new Object()

    
    
       function Person(name) {
           this.name = name
       }
    
       
       Person.prototype.getName = function () {
           return this.name
       }
    
    
       var ObjectFactory = function () {
           // 创建一个对象
           var obj = new Object()
           // 返回第一个参数作为构造函数
           var Constructor = [].shift.call(arguments)
           // 将构造函数的原型复制于对象的原型
           obj.__proto__ = Constructor.prototype
           // 调用构造函数,并将obj 作为this, arguments作为参数
           var ret = Constructor.apply(obj, arguments)
           // 如果构造函数里返回一个对象的话,就直接返回,否则我们就返回this即new创建的对象
           return typeof ret === 'object'? ret: obj
       }
    
    
       var a = ObjectFactory(Person, 'sven')
       console.log(Object.getPrototypeOf(a) === Person.prototype)
    
    
    
       // 效果等效
       var a = ObjectFactory(Person, 'sven')
       var a = new Person('sven ')
    
       
    
       如果构造函数用return 显示的返回一个对象,那么new之后,会返回这个对象。
       如果构造函数不显示的返回任何数据,或返回一个非对象类型的数据,则默认返回this指定的对象。即构造函数生成的对象。
    
       
    
    
    

    参考:https://www.jianshu.com/p/60d1b79974bd

  • 相关阅读:
    游戏引擎中的光照算法
    深入剖析GPU Early Z优化
    UE4联机编译光照
    深入剖析MSAA
    Unity 使用xLua遇到的坑
    扩展SQLite使其能从apk文件中读取db
    tolua#代码简要分析
    虚幻4垃圾回收剖析
    虚幻4蓝图虚拟机剖析
    java转成xml
  • 原文地址:https://www.cnblogs.com/geekjsp/p/15807618.html
Copyright © 2011-2022 走看看