企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ### js中的“类“ ~~~ 1. js使用带参带参函数模拟java中的类(es5) 2. 也可以使用es6语法创建类 ~~~ demo1: ~~~ function Person(name, age) { this.name = name; this.age = age; this.eat = function () { console.log("吃饭"); } } ~~~ ### demo2(es6): ~~~ <script> // es6创建一个类 class Person { constructor(name, age) { this.name = name; this.age = age; } sayName() { console.log(this.name); } } let di = new Person("name", "age"); console.log(di) </script> ~~~ ### js中的继承: ~~~ 1. js中每一个对象都有__proto__(双下划线属性)实质上是个指针,指向上一级类或object,指向它的原型对象,同时共享原型上的方法 (当给它的原型上添加方法、属性时 在对象中找改方法、属性 找不到的情况下 通过__proto__找原型上的内容) 2. js中的继承基于原型继承 3. 获取原型的所有方法 Object.getPrototypeOf(tong); ~~~ ### es5中js中实现属性的继承: ~~~ 1. 在不使用this关键字的时候(麻烦): <script> var Person = function (name, age) { this.name = name; this.age = age; } Person.prototype.see = function () { console.log(this.name + "爱看片") } function Teacher(skill) { //属性继承(实现在继承的基础上再添加新的属性)(但是属性这样继承很麻烦于是就出现了使用 .call(this,,)来继承父类中的属性) this.skill=skill; } var cheng = new Teacher(); cheng.name="tong"; cheng.age=18; cheng.skill="bb" console.log(cheng); </script> 2. 使用(较简单): <script> var Person = function (name, age) { this.name = name; this.age = age; } Person.prototype.see = function () { console.log(this.name + "爱看片") } function Teacher(name,age,skill) { //属性继承(实现在继承的基础上再添加新的属性)(但是属性这样继承很麻烦于是就出现了使用 .call(this,,)来继承父类中的属性) Person.call(this,name,age);//相当于 this.name = name; this.age = age; this.skill=skill; } var tong=new Teacher("tong",18,"bb"); console.log(tong) //方法继承 Teacher.prototype = new Person(); //继承 Teacher.prototype.constructor = Teacher;// 要加上这句不加的话teacher的构造器指向的person 加上实现真正的继承 console.log(Teacher.prototype.constructor); // var cheng = new Teacher(); // cheng.name="tong"; // cheng.age=18; // cheng.skill="bb" // console.log(cheng.name); </script> ~~~ ### es5中js中实现 方法 的继承: ~~~ Teacher.prototype = new Person(); ~~~ ### es6中的继承 (与java相通) ~~~ <script> class Person{ constructor(name,age){ this.name = name; this.age = age; } sayName(){ console.log(this.name); } } class Teacher extends Person{ constructor(name,age,skill){ super(name,age); this.skill = skill; } } var cheng = new Teacher("cheng",18,"pp"); cheng.sayName(); console.log(cheng.name); console.log(cheng); </script> ~~~