zoukankan      html  css  js  c++  java
  • JS的prototype和__proto__、constructor

    看了JS的prototype和__proto__这篇文章,才感觉很清晰了,对于原型这块,以前经常把这些属性弄不清楚,

    明白了之后保存下整理下:

      prototype: 是函数的一个属性(每个函数都有一个prototype属性)

      __proto__: 是一个对象拥有的内置属性

      (prototype是函数的内置属性,__proto__是对象的内置属性)

    二、new 的过程

    var t= function(){};
    var p = new t();

    new的过程拆分成以下三步:
    (1) var p={}; 也就是说,初始化一个对象p
    (2) p.__proto__ = t.prototype;
    (3) t.call(p); 也就是说构造p,也可以称之为初始化p

    关键在于第二步,我们来证明一下:

    var t= function(){};
    var p = new t();
    alert(p.__proto__ === t.prototype);//true

    这段代码会返回true。说明我们步骤2是正确的。

    三、constructor

      我们知道,默认情况下,对一个函数前面使用new,可以构造出一个对象。每一个对象都有一个constructor属性,这个constructor属性指向构造出该对象的函数。

            function a(x){
                alert(x);
            }
            var p = new a('22');
            alert(p.constructor);

    结果如下:

    返回的是函数a,把代码改下

            function a(x){
                alert(x);
            }
            var p = new a('111');
            var t = p.constructor;
            t('222');

    结果如下:

  • 相关阅读:
    使用 Selenium
    Senium 简介
    第8章 动态渲染页面爬取
    Ajax 结果提取
    Ajax 分析方法
    WINDOW 2008多人访问设置
    Windows 2012设置允许单个用户连接多个会话的方法
    Windows Server 2012开启多人远程
    BOM 表
    修复材料工单分配材料订单重复占料问题的开发
  • 原文地址:https://www.cnblogs.com/bruce-gou/p/6064057.html
Copyright © 2011-2022 走看看