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