属于转载,放在html文件里面方面粘贴来下看
https://www.jianshu.com/p/86267fab4878
百度上搜到的地址,不知道是不是原地址
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> // 由代码可以看出类实质上就是一个函数。类自身指向的就是构造函数。 // 所以可以认为ES6中的类其实就是构造函数的另外一种写法! class Person{ //定义了一个名字为Person的类 constructor(name,age){ //constructor是一个构造方法,用来接收参数 this.name = name; //this代表的是实例对象 this.age=age; } say(){ //这是一个类的方法,注意千万不要加上function return "我的名字叫" + this.name+"今年"+this.age+"岁了"; } } var obj=new Person("laotie",88); console.log(obj.say()); //我的名字叫laotie今年88岁了 // 1.在类中声明方法的时候,千万不要给该方法加上function关键字 // 2.方法之间不要用逗号分隔,否则会报错 // 实际上类的所有方法都定义在类的prototype属性上 Person.prototype.say=function(){ //定义与类中相同名字的方法。成功实现了覆盖! return "我是来证明的,你叫" + this.name+"今年"+this.age+"岁了"; } var obj=new Person("laotie",88); console.log(obj.say()); //我是来证明的,你叫laotie今年88岁了 // 当然也可以通过prototype属性对类添加方法 Person.prototype.addFn=function(){ return "我是通过prototype新增加的方法,名字叫addFn"; } var obj=new Person("laotie",88); console.log(obj.addFn()); //我是通过prototype新增加的方法,名字叫addFn // 还可以通过Object.assign方法来为对象动态增加方法 Object.assign(Person.prototype,{ getName:function(){ return this.name; }, getAge:function(){ return this.age; } }) var obj=new Person("laotie",88); console.log(obj.getName()); //laotie console.log(obj.getAge()); //88 //constructor方法是类的构造函数的默认方法,通过new命令生成对象实例时,自动调用该方法。 class Box{ constructor(){ console.log("五月天还不来开演唱会,好烦啊"); //当实例化对象时该行代码会执行。 } } var obj=new Box(); // constructor方法如果没有显式定义,会隐式生成一个constructor方法 // 所以即使你没有添加构造函数,构造函数也是存在的 // constructor方法默认返回实例对象this,但是也可以指定constructor方法返回一个全新的对象,让返回的实例对象不是该类的实例 </script> </body> </html>