You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
>原型 (prototype):为其他对象提供共享属性的对象。
|
|
|
|
|
|
|
|
JavaScript 是一门基于原型的语言,它靠着原型这一个特殊的概念实现了面对对象,在一众基于“类”的面对对象语言中脱颖而出,可以说原型就是 JavaScript 语言的基石。
|
|
|
|
|
|
|
|
那么原型是什么?开头那句话是 ECMAScript 5.1 中对原型做出的概述,但是深入到 JavaScript 的学习中会看到关于原型总会有不同的样子出现例如 prototype、\_\_proto\_\_ ,它们分别代表着什么?在 JavaScript 语言中又有着怎样的作用?
|
|
|
|
|
|
|
|
## prototype、\[\[prototype\]\] 和 \_\_proto\_\_ 都是什么?
|
|
|
|
|
|
|
|
\[\[prototype\]\] 是所有对象都具有的私有属性,这个属性的实现方式取决于各个平台,而对于浏览器环境而言,以 Chrome 为例,定义了 \_\_proto\_\_ 访问器属性(getter、setter) 指向 \[\[prototype\]\],也就是说在对象中,通过 \_\_proto\_\_ 访问到的就是 \[\[prototype\]\] 私有属性
|
|
|
|
|
|
|
|
prototype 是函数独有的属性,无论什么时候只要创建了新的函数,就会根据特定的规则为该函数创建一个 prototype 属性,这个属性指向一个私有的空间/仓库,这个空间也有着一个 constructor 属性指回该函数,
|