一、Class的基本语法
1、简介
基本上,ES6的class可以看作只是一个 语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让 对象原型 的写法更加清晰、更像面向对象编程的语法而已。
如果要生成一个对象实例,需要先定义一个构造函数,然后通过new操作符来完成。构造函数实例:
//函数名和实例化构造名相同并且大写(有助于区分构造函数和普通函数)
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.read = function(){
return "我的名字叫" + "this.name" + "今年" + this.age + "岁了";
}
var obj = new Person("一诺",18);//通过构造函数创建对象,使用new
console.log(obj.read()) //结果:我的名字叫一诺今年18岁了。
上面代码的代码用ES6改写:
class Person{ //定义一个名为Person的类
constructor(name,age){ //constructor是一个构造方法,用来接收参数
this.name = name;
this.age = age;
}
read(){
return "我的名字叫" + this.name + "今年" + this.age + "岁了"
}
}
var obj = new Person ("一诺",18)
console.log(obj.read()) //我的名字叫一诺今年18岁了
constructor方法是类的构造函数的默认方法,通过new 命令生成对象实例时,自动调用该方法。
class Box{ constructor(){ console.log("这个礼拜天气不错"); //当实例化对象时该行代码会执行 } } var obj = new Box();
class Desk{ constructor(){ this.ss = "大千世界,无奇不有"; } } class Box{ constructor(){ return new Desk();//没有用this,直接返回一个全新的对象 } } var obj = new Box(); console.log(obj.ss) //大千世界,无奇不有
class不错在变量提升,所以需要先定义再使用。因为ES6不会把类的声明提升到代码的头部,但是ES5就不一样,ES5存在变量提升,可以先使用,然后再定义
原文:https://www.cnblogs.com/pan-pan309/p/12064476.html