JavaScript面向对象

一.原型链

function Person(n,a){
    return {
        name : n , 
        age :  a
    }
}
Person.prototype.abc=function(){
    console.log("儿子");
}
let person = new Person('张子浩',20);
console.log(person.name);
Person.prototype.abc();

定义一个函数,返回这些属性,就犹如C#中对函数封装一样,我们可以对这个函数进行封装。

二.Class类

ES6和ES5中有非常多的不相似点,我们慢慢思考

class DBHelper {
    constructor() {}
    getdate () {
        return new Date();
    }
}
// 导出内容
// export default DBHelper = DBHelper;  // ES6 
module.exports = DBHelper;              // ES5

通过 module.exports 可以进行公开内容  差不多就pubic。

在第二个class中

// import ZZH from './lei2.js'; // ES6
var ZZH = require('./lei2'); // ES5   require.js
// 在 JS 中 所有的 类 都可以看成是 object 的 子类。
class Person{
    // 构造函数
    constructor(n,a){
        this.name = n;
        this.age= a;
    } 
    abc(){
        console.log('hehe');
    }
}

通过constructor关键字可以写构造函数,我们还可以在类中写其他的方法.

其中require关键字是可以引用别的lei  差不多就是new关键字   路径可以是绝对路径和相对路径,我们就可以去调用ZZH中的函数了

 三.类的继承

// 类的继承
class Student extends Person{

}
let person = new Person('张子浩',20);
console.log(person.name);

let stu = new Student('张建晗',20);
console.log(stu.name);
 
console.log(typeof (person)); // object
console.log(typeof (stu)); // object
 
// 获取对象的 构造函数
console.log(person.constructor);
console.log(stu.constructor);
 

类的继承可以通过extends关键字,值得思考的是两者的类型都是object,获取对象的构造函数可以通过constructor

原文地址:https://www.cnblogs.com/ZaraNet/p/9798291.html