• 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');

    结果如下:

  • 相关阅读:
    %EF%BB%BF问题
    java 性能调优总结
    Mysql 批量数据插入- 插入100万条数据
    中医-常见病-疗法
    windows Oracle 卸载注册表清理脚本
    Redis 关键点剖析
    JPA教程
    Xcode8 iOS10 中权限适配
    textField设置输入文字距左边的距离
    调用手机相册,相册语言选择,
  • 原文地址:https://www.cnblogs.com/bruce-gou/p/6064057.html
Copyright © 2020-2023  润新知