加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

prototype原型和构造函数

发布时间:2020-12-15 00:15:11 所属栏目:C语言 来源:网络整理
导读:1。只有构造函数才有prototype属性并且可以访问到,但是对象实例不具有该属性,只有一个内部的不可访问的__proto__属性 2。当调用构造函数创建一个实例的时候,实例内部将包含一个内部指针(__proto__)指向构造函数的prototype,这个连接存在于实例和构造函

1。只有构造函数才有prototype属性并且可以访问到,但是对象实例不具有该属性,只有一个内部的不可访问的__proto__属性
2。当调用构造函数创建一个实例的时候,实例内部将包含一个内部指针(__proto__)指向构造函数的prototype,这个连接存在于实例和构造函数的prototype之间,而不是实例与构造函数之间。
3。实例就是通过构造函数创建的。实例一创造出来就具有constructor属性(指向构造函数)和__proto__属性(指向原型对象),
构造函数中有一个prototype属性,这个属性是一个指针,指向它的原型对象。
原型对象内部也有一个指针(constructor属性)指向构造函数:Person.prototype.constructor = Person;
实例可以访问原型对象上定义的属性和方法。
Person.prototype = {

name : "a",age : 1,sayName : function () {
    console.log(this.name);
}

}; 以这样的形式重写原型对象,constructor就不在指向Person,因为每创建一个函数,就会同时创建它的 prototype 对象,这个对象也会自动获得 constructor 属性,指向Person。但是现在重写了原型对象,这时候constructor就变为新对象的constructor,指向Object 构造函数。所以要显示地重置,
Person.prototype = {

constructor : Person,name : "a",sayName : function () {
    console.log(this.name);
}

};

4。函数的prototype属性,本身是一个由Object构造的实例对象,所有的构造函数都继承自Object
5。__proto__属性和prototype属性的区别
prototype是function对象中专有的属性。
__proto__是普通对象的隐式属性,在new的时候,会指向prototype所指的对象;
__ptoto__实际上是某个实体对象的属性,而prototype则是属于构造函数的属性。__ptoto__只能在学习或调试的环境下使用。
6.调用构造函数创造实例时,会给实例添加一个指向原型对象的指针__proto__,并不指向构造函数。
7.Object可以理解为object对象,也可以理解为Object方法,所以,他是Function的实例(Object方法)。Function可以理解为方法对象,所以是Object对象的实例。
8.Object和Function都是构造函数,而所有的构造函数又都是Function对象的实例。Function.prototype又是Object的实例。

9.静态变量和静态函数 定义一个函数之后,通过"."添加的属性和函数或字面量添加的,只有对象本身能访问到,实例访问不到。
10.实例变量和实例方法 通过this.添加的。对象访问不到,只有实例能访问到

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读