es5 类与继承

简介: es5 类与继承

ES5定义一个类

function Person(name, sex) {
    // 构造函数
    this.name = name;
    this.sex = sex; // 实例属性,必须要new person 的时候才能被调用
    this.run = function () {
    // 实例方法,必须要new person 的时候才能被调用
        console.log(this.name + "在运动!");
    };
};

创建一个静态方法

Person.getUserInfo = function () {
    // 静态方法
    console.log("我是一个静态方法");
};
Person.getUserInfo(); // 调用静态方法

实例化Person类

let ps = new Person("qiyingcong", "男"); // 实例化Person类
ps.run(); // 调用Person类的run方法
console.log(ps.sex); // 访问Person类的属性

/**
 * 通过原型链来给Person类扩展方法和属性
 * 原型链上的属性和方法会被多个实例共享  构造函数不会
 */
Person.prototype.age = "22";
Person.prototype.work = function () {
   
    console.log("上班是写代码的IT程序员@");
};

es5上的继承分为两种:(原型链)、(对象冒充)

# function Web(name, sex) {
    // Web类继承Person类   是通过对象冒充实现继承
    Person.call(this);  // 对象冒充继承只继承构造函数方法和属性,没法继承(原型链)函数方法和属性
};
Web.prototype = new Person(); // 原型链继承 (又可以继承构造函数的属性方法也可以继承原型链的属性方法)   缺点:实例化子类没法给父类传参
let w = new Web("qiyingcong", "男");

// 原型链加对象冒充组合
function Nax(name, sex) {
   
    Person.call(this, name, sex);
};
Nax.prototype = Person.prototype; // 另一个方法 new Person();
let n = new Nax("qiyingcong", 22); // (实例化子类给父类传参)
目录
相关文章
|
23天前
类与ES6类之间的继承
类与ES6类之间的继承
|
4月前
|
安全 编译器 程序员
【C++】继承 -- 详解(上)
【C++】继承 -- 详解(上)
|
4月前
|
存储 Java 编译器
【C++】继承 -- 详解(下)
【C++】继承 -- 详解(下)
|
4月前
|
JavaScript 前端开发
ES6如何声明一个类?类如何继承?
ES6如何声明一个类?类如何继承?
38 0
|
10月前
ES5的继承和ES6的继承有什么区别
ES5的继承和ES6的继承有什么区别
50 0
ES5 / ES6 的继承除了写法以外还有什么区别
ES5 / ES6 的继承除了写法以外还有什么区别
|
JavaScript
【ES6】类
【ES6】类
53 0
|
程序员 C++
C++ -- 继承
1. 继承的概念和定义 1.1 概念 继承机制是面向对象设计程序使得代码可以复用,它允许程序员在保持原有类特性的基础上进程扩展,增加功能,这样产生的新的类叫做派生类。简单来说继承是类设计层次的复用。
54 0