什么是原型?
原型是构造函数构造出对象的共有祖先,通过该构造函数构造出的对象,都可以继承该原型的属性和方法。
如何获取原型方法?
1.通过对象.__proto__获取。
2.通过构造函数的prototype属性拿到原型。
3.原型链:原型对象也是有原型的。通过__proto__属性进行查看,以此类推,就形成一个链条,类似于作用域链,在查找对象的某个方法或属性时,若自身有就用自身的,如果没有就沿着原型链往上面走。直到最顶端没有,就为null。
一.如何获取原型对象
// 1.通过对象.__proto__获取;
let student={
name:"马冬梅",
}
// 给对象的原型对象添加一个方法
student.__proto__.say=function(){
console.log("夏洛,别走!");
}
// 这个对象也可以调用
student.say();
// 2.通过构造函数创建的对象,都可以通过构造函数的prototype属性拿到原型对象。从而获取(继承)原型对象的属性和方法。
function Student(){
}
let stu = new Student();
Student.prototype.say=function(){
console.log("夏洛,滚!");
}
stu.say();
二.原型对象在实际项目中和有什么用?
比如我们想扩展一些内置对象或者自定义对象的属性和方法
// 例如我们想通过调用Date对象的formatData方法,输出“年-月-日”形式。
// 就可以通过给Date对象的原型拓展方法实现
Date.prototype.formatData=function(){
let Y = this.getFullYear() + '-';
let M = (this.getMonth() + 1 < 10 ? '0' + (this.getMonth() + 1) : this.getMonth() + 1) + '-';
let D = (this.getDate() + 1 < 10 ? '0' + (this.getDate()) : this.getDate());
return Y + M + D;
}
let date = new Date();
console.log(date.formatData());