构造函数
构造函数在创建实例后,是无法在进行添加属性的,所以每个构造函数都有一个prototype属性,这个属性指定一个原型对象,这个原型对象上的所有属性和方法都可以被构造函数的实例使用。
prototype 构造函数名.prototype.属性名 = 属性值
基于原型的继承
继承是一种关系,父类与子类的继承关系,通过原型来实现,继承父类的属性和方法,继承是为了数据共享。
注:在子类的原型对象继承父类原型对象后,才可以定义子类本身的原型方法,否则会被父类原型方法所覆盖或修改。
示例
//函数名和实例化构造名相同且大写(非强制,但这么写有助于区分构造函数和普通函数)
//创建一个Person的构造函数
function Person(name) {
this.name = name;
}
//创建一个Son的构造函数
function Son(age) {
this.age = age;
}
Person.prototype = new Son(20); //先继承,在写扩展,否则会被父类原型方法覆盖或修改
Person.prototype.say = function () { //扩展方法
return "我的名字叫" + this.name + "今年" + this.age + "岁了";
}
Son.prototype.nameAge = function () {
return "我的名字叫" + this.name + "今年" + this.age + "岁了";
}
var person = new Person("默永"); //通过构造函数创建对象,必须使用new 运算符
console.log(person.say()); //我的名字叫默永今年20岁了
console.log(person.nameAge()); //我的名字叫默永今年20岁了
扩展
//扩展Date对象实现dateFormate方法,返回值是“xxxx年xx月xx日
Date.prototype.dateFormate = function () {
return `${this.getFullYear()}年${this.getMonth() + 1}月${this.getDate()}`
}
const date = new Date();
console.log(date.dateFormate());
Es6面型对象 class类
标签:function,age,Person,原型,prototype,构造函数 From: https://www.cnblogs.com/Lmyong/p/16879635.html