原型对象
每一个对象都有它自己的原型对象,它可以使用原型对象上的所有属性和方法,我们可以通过一定方法向对象的原型对象上增加方法和属性。
「1」通过__ proto __添加
name:'小白',
age:1
}
//添加属性: cat.__proto__.color = "red";
console.log(cat.color);//red
//添加方法: cat.__proto__eat = function(){
console.log('吃鱼了!');
}
//添加成功后可以通过obj.方法名调用该方法
cat.eat()//'吃鱼了!'
「2」通过构造函数的prototype属性获取原型对象并且操作
this.name = name;
this.age = age;
}
//通过上面的构造函数实例化一个dog对象
let dog = new Dog('小白',3);
//通过prototype添加属性和方法
Dog.prototype.color = "red";
Dog.prototype.eat = function (){
console.log('吃骨头了!')
};
//使用新增的方法和属性
console.log(dog.color);//red
dog.eat();//吃骨头了
「3」通过类的prototype属性拿到原型对象
class Bird {
constructor(name,age){
this.name = name;
this.age = age;
}
};
//实例化
let bird = new Brid ('靓仔',2);
//类的prototype属性拿到原型对象并且新增方法和属性
bird.prototype.color = "red";
brid.prototype.eat = function (){
console.log('吃虫子了!');
}
console.log(brid.color);//red
brid.eat()//吃虫子了!
「4」原型对象的应用
//例如给Date()对象新增输出格式化时间的方法
let date = new Date ();
Date.prototype.getFormatTime = function() {
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDay();
var hours = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
// console.log(year +'年'+ (month+1) +'月'+ day +'日'+ hours +':'+ minute +':'+ second);
return `${year}年${month+1}月${day}日`
}
console.log(date.getFormatTime());//2021年7月27日