• constructor


    • 是一个属性
    • 是默认的prototype对象的属性
    • 值为构造函数

    构造函数的实例对象,有一个隐藏的[[prototype]]属性,此属性从何而来?

    在对象被创建出来的过程中,构造函数prototype常规属性指向一个对象,那个对象同样是实例对象[[prototype]]属性的值。

    实例对象可以使用constructor属性。

    1 function Rabbit() {}
    2 // by default:
    3 // Rabbit.prototype = { constructor: Rabbit }
    4 
    5 let rabbit = new Rabbit(); // inherits from {constructor: Rabbit}
    6 
    7 alert(rabbit.constructor == Rabbit); // true (from prototype)

    考虑下构造函数,构造函数现在多了一个代言人constructor属性,它指向构造函数,本质上,使用constructor就是在使用构造函数。

    1 function Rabbit(name) {
    2   this.name = name;
    3   alert(name);
    4 }
    5 
    6 let rabbit = new Rabbit("White Rabbit");
    7 
    8 let rabbit2 = new rabbit.constructor("Black Rabbit");

    是啊,new Rabbit() 和new rabbit.constructor()效果一样。

    中文名叫构造器属性,也差不多吧。

    构造器属性说白了还是某一个对象中的属性,它一定存在吗?

    肯定不行,如果我们改变它所在的那个对象,它可能就被干掉了。

    改变这个对象有哪些方式?就像我们买鞋一样,是重新买一双还是修补?

    假如这双鞋里有非常牛的功能,那就是它能自动确认方向,就像个指南针一样。

    最好是修补吧,没必要买一双就别买。

    假如非要换一双,而且还要这个非常牛的功能,就重新把这个功能安装上去。

  • 相关阅读:
    jquery mobile
    可能用到的负边距应用
    兼容性问题
    less和scss
    函数的继承
    关于canvas
    html5表单属性
    html代码
    git 拉取远程分支 --本地分支不存在
    git 删除分支
  • 原文地址:https://www.cnblogs.com/flyover/p/14159217.html
Copyright © 2020-2023  润新知