🚀
头像

默永


人生就像骑单车,想保持平衡就得往前走。

构造函数

2022-03-22 12:04:27 54 💗 0 @默永

构造函数

构造函数在创建实例后,是无法在进行添加属性的,所以每个构造函数都有一个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类

Es6面型对象 class类

    目录导航