自从es6出现之后,js里就有了class这个可以用来定义类对象,其实在编译完之后,最早是使用的闭包方式来实现的,今天我们就来讲解两种在js中实现类的写法。
class Person{
constructor(name)
{
this.name = name;
console.log("我是父类的构造函数");
}
}
class Student extends Person{
constructor(name){
super(name);
console.log("我是student的构造函数");
}
shout(){
console.log("我的名字是:"+this.name);
}
get age(){
console.log("我是getter");
return this._age;
}
set age(val){
console.log("我是setter",val);
this._age = val;
}
}
var student = new Student("zsf");
student.age = 99;
console.log(student.age);
student.shout();var Person = function(){
var Person = function(name)
{
this.name = name;
console.log("我是父类构造函数");
}
Person.prototype.name = "";
return Person;
}();
var Student = function(){
var Student = function(name){
Person.prototype.constructor.call(this,name);
console.log("我是子类构造函数");
}
Student.prototype ={
get age(){
console.log("我是getter");
return this._age;
},
set age(val){
console.log("我是setter",val);
this._age = val;
}
}
Student.prototype.shout=function(){
console.log(this.name);
}
return Student;
}();
var student = new Student("zsf");
student.age = 99;
console.log(student.age);
student.shout();注:js中没有接口的概念,但是在ts(typescrpt)中是有接口的概念,ts是js的超级,更新近于我们常见的高级语言的oop的写法,类如java,c#,php等!我们以上用两种写法写了js实现类和继承,以及getter和setter写法,class的写法,大家如果看过之前的php编程就比较好理解了。function闭包的写法,主要是依据于js中的prototype对象,这个是js实现oop的核心,你即使用class的写法,其内部也是基于prototype的写法来写的!在大家可以把prototype理解成extend的意思,某个function的prototype=obj,表示这个function里包含了obj里的属性和方法。prototype属于原型链继承。
| 留言与评论(共有 0 条评论) “” |