原型与原型链
1 原型prototype
1、函数的prototype属性(图)
每个函数都有一个prototype属性,它默认指向Object空对象(即原型对象)
原型对象中有一个属性constructor,它指向函数对象
2、给原型对象添加属性(一般都是方法)
***作用:函数的所有实例对象自动拥有原型中的属性(方法)
// (1)每个函数都有一个prototype属性,它默认指向Object空对象(即原型对象)
console.log(Date.prototype,typeof Date.prototype);//Object "object"
function Funn() {}
console.log(Funn.prototype);//默认指向一个空对象(没有我们指定的)
// Object {constructor: ƒ}
// constructor: ƒ Funn()
//__proto__: Object
//给原型对象添加属性(一般是方法),实例对象可以访问
Funn.prototype.test=function () {
console.log('test()');
}
console.log(Funn.prototype);//有我们制定的函数test
//(2)原型对象中有一个属性constructor,它指向函数对象
console.log(Date.prototype.constructor===Date);//true
console.log(Funn.prototype.constructor===Funn);//true
var funn = new Funn();
funn.test();
2、原型继承
js的继承实际上是原型的继承。
原型其实是一个对象。
有时会说js是基于对象的继承
注意:java是基于类的继承
JavaScript面向对象(高级)2.1原型继承