原型
隐式原型:
每个对象拥有一个原型对象。查看方法:对象.proto。
默认情况,对象的隐式原型指向其构造函数的原型。
函数原型
每个函数都有一个特殊的属性叫作原型(prototype)。查看方法:函数.prototype。
构造函数的prototype.construction指向构造函数本身。
原型链
原型链结构
1.p对象的隐式原型(__proto__
)等于其构造函数(Per)的 prototype;p对象可以继承Per原型(prototype)上的属性。
2.构造函数(Per)的prototype也是一个对象,所以Per.prototype的__proto__等于它的构造函数(Object)的prototype。
3.函数的本质是对象,所以Per的__proto__指向 Function.prototype。
4.Function.prototype.proto 指向 Object.protype。
5.Object.prototype.__proto__指向null。
6.构造函数的原型(protoytype)上的 constructor 指向构造函数本身。
7.代码运行过程中,某对象的属性可以沿着原型(prototype)链一直找到null
方法
1.Object.getPrototypeOf(对象):获取对象的隐式原型。
2.Object.prototype.isPrototypeOf():判断指定的对象是否在本对象的原型链中。返回布尔值。
3.对象 instanceof 函数 :判断函数的原型是否在对象的原型链上。
!注意:在页面上有frame(窗口)会失效。
4.Object.prototype.hasOwnProperty(属性名):判断一个对象 自身是否拥有某些属性。
5.Object.create(对象):创建一个新对象,其隐式原型指向指定的对象。
!注意:一定要有参数,可以是null。
应用:可以用来创建对象。
6.Object.setPrototypeOf() :设置一个指定的对象的原型到另一个对象或 null
!参数:obj—要设置其原型的对象。.
()—该对象的新原型(一个对象 或 null)。
简单的原型题
function