1.函数的prototype属性
每一个函数都有一个prototype属性,它默认指向一个object空对象(即:原型对象)
console.log(Date.prototype);//{constructor: ƒ, toString: ƒ, toDateString: ƒ, toTimeString: ƒ, toISOString: ƒ, …}
原型对象中有一个属性constructor,它指向函数对象
console.log(Date.prototype.constructor === Date);//true
2.给原型对象添加属性(一般都是方法)
作用:函数的所有实例对象自动拥有原型中的属性(方法)
function Fun () {
} ;
//1.每一个函数function都有一个prototype,即显式原型
console.log(Fun.prototype);
// 给原型对象添加属性(一般是方法) == 实例对象可以访问
Fun.prototype.test = function () {
console.log("test()");
}
var fun = new Fun()
//2.每一个实例对象都有一个__proto__,称为隐式原型
console.log(fun.__proto__);
fun.test()
//3.对象的隐式原型的值为其对应构造函数的显式原型的值
console.log(Fun.prototype===fun.__proto__);