原型与原型链

一、 普通对象与函数对象

JS中都可以当做对象,分为普通对象和函数对象,Object 、Function 是 JS 自带的函数对象。
凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。通过 new Function()的方式进行创建,Function Object 也都是通过 New Function()创建的。

二、 构造函数

由于函数是对象,我们可以用构造函数的方法使得 Number、Boolean、String变成对象。
var n = new String() 创建一个 String 函数,其是一个对象
![F9J_5%RH4}]WB{5M0ML96J6.png](https://upload-images.jianshu.io/upload_images/13519876-40508f9fed1d81ad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

这里的 n 就是 String 的实例,可以看到 n 里面有一个 proto 指向 String () 这个函数,String () 即为 n 的原型对象(prototype) ;
而 String () 函数有一个 proto 指向 Object() 函数 ,Object() 即为 String () 的原型对象,String 是 Object 的实例

三. 原型对象

在 JavaScript 中,每当定义一个对象(函数也是对象)时候,对象中都会包含一些预定义的属性。其中每个函数对象都有一个prototype 属性,这个属性指向函数的原型对象。
用 var 基本类型 = new 对应基本类型的函数() 的方法创建一个新的函数

将公用属性存放在同一原型层中,实现共享、节省内存空间等。

当您访问实例的属性时,JavaScript首先会检查它们是否直接存在于该对象上,如果不存在,则会[[Prototype]]中查找。

你可能感兴趣的:(原型与原型链)