资讯专栏INFORMATION COLUMN

模拟一个js new一个对象的过程

pf_miles / 2319人阅读

摘要:上述代码模拟了一个对象的过程,从该函数的代码中可以清晰的看到一个对象是怎么生成的,从这里我们也可以发现,如果构造函数显示的返回一个对象,出来的对象就是该构造函数返回的对象,如果其他类型的数据都会被忽略。

        function Person(){
          this.name=1234;
         // return {};
          }
        Person.prototype.getname=function(){
            console.log(this.name);
            }
        function CreateObj(){
           var fn=[].shift.call(arguments);
           var args=arguments;
           var obj=new Object();
           var ret=fn.apply(obj,args);
           obj.__proto__=fn.prototype;
           return typeof ret ==="object"?ret:obj;
           }
    var a=CreateObj(Person);
    console.log(a);

上述代码CreateObj 模拟了js new一个对象的过程,从该函数的代码中可以清晰的看到一个对象是怎么生成的,从这里我们也可以发现,如果构造函数显示的返回一个对象,new出来的对象就是该构造函数返回的对象,如果retrun其他类型的数据都会被new忽略。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88186.html

相关文章

  • 从零到有模拟实现一个Set类

    摘要:过滤掉和简单判断是否是迭代器对象模拟行为对迭代器对象进行遍历操作。看到这里你可能已经知道了,要实现的功能之一就是提供一个迭代器。原文链接参考迭代器和生成器系列之模拟实现一个数据结构展开语法循环 前言 es6新增了Set数据结构,它允许你存储任何类型的唯一值,无论是原始值还是对象引用。这篇文章希望通过模拟实现一个Set来增加对它的理解。 原文链接 用在前面 实际工作和学习过程中,你可能也...

    PAMPANG 评论0 收藏0
  • 深入浅出Vue响应式原理

    摘要:总结最后我们依照下图参考深入浅出,再来回顾下整个过程在后,会调用函数进行初始化,也就是过程,在这个过程通过转换成了的形式,来对数据追踪变化,当被设置的对象被读取的时候会执行函数,而在当被赋值的时候会执行函数。 前言 Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。这使得状态管理非常简单直接,不过理解...

    yiliang 评论0 收藏0
  • javascript之模拟类继承

    摘要:欢迎关注我的博客正文让我来构造函数其实,模拟一个类的方式非常的简单构造函数。我们先来看一个例子这里通过构造函数模拟出来的类,其实和其他语言的类行为上是基本一致的,唯一的区别就是它不具备私有方法。 前言 ES6时代的来临,使得类继承变得如此的圆滑。但是,你有思考过ES6的类继承模式吗?如何去实现它呢? 类继承对于JavaScript来说,实现方式与Java等类语言大不相同。熟悉JavaS...

    Jochen 评论0 收藏0
  • JavaScript_引用类型

    摘要:构造函数用于检测给定的属性在当前对象实例中而不是原型中是否存在。返回对象的字符串表示。创建的实例化对象,构造函数指向的是继承的对象的类的构造函数。 数组 在ECMAScript中数组是非常常用的引用类型ECMAScript所定义的数组和其他语言中的数组有着很大的区别数组也是一种对象 创建数组 //方法一 var arr = new Array(); //方法二 var arr1 =...

    justCoding 评论0 收藏0

发表评论

0条评论

pf_miles

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<