js 函数原型,隐式原型,原型链

# 基础 

- 所有的对象都是通过 ···new 函数 ··· 构造函数  创建的

- 所有的函数也是对象 (函数也可以有属性)

- 所有的对象都是引用类型


### 1.原型 prototype  (原型是一个对象,也叫原型对象)

    -  所有的[函数]都有一个属性:prototype 称之为[函数原型]

    -  默认情况下 ,protoype 是一个普通的Object对象, prototype有一个属性constructor,指向构造函数

```

  tes t(){}

  let obj = new test(); 

  obj.__proto__ ===  test.prototype

```

JS 原型是指为其它对象提供共享属性访问的对象


### 2. 隐式原型 __proto__  (系统变量[[Prototype]]) 或者对象原型

隐式原型:所有的对象都有 __proto__,又名[[Prototype]],它指向**该对象的构造函数(constructor)的原型proto**

```

 <!-- 构造函数 -->

      function Person(name) {

        this.name = name;

      }

      Person.prototype.sayName = function () {

        return this.name;

      };

Person.prototype.__proto__  === Object.prototype ;// true

构造函数 Person 的原型继承自 Object.prototype

```

###  原型链:

A:每个对象都有 __proto__ 属性,它指向原型对象的prototype,原型对象也是对象,也有 __proto__ 属性,并指向它的原型对象,这样一层一层,**最终指向 null (js内核放置的)**,这种关系被称为原型链。

总结:对象的原型,是共享的

给一个对象,加入一个原型属性


实例.__proto__和构造函数.prototype是等价的**

子对象的__proto__ === 父对象的 prototype**

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容