几大特性:封装 继承 多态 抽象
继承
function Person(name,age){//person类,里面有两个属性
this.name = name;
this.age = age;
}
//每一个类都有一个prototype对象属性,给这个对象属性添加一个hi属性,并给hi属性赋值一个方法
Person.prototype.hi = funtion(){
console.log("Hi,my name is" + this.name +",I am" + this.age +"years old now.");
}
//同样给这个prototype对象属性添加一个walk属性,并给这个属性赋值一个方法
Person.prototype.walk = function(){
console.log(this.name + "is walking...");
}
//同上
Person.prototype.LEGS_NUM = 2;
Person.prototype.ARMS_NUM = 2;
//创建了一个Student类
function Student(name,age,className){
Person.call(this,name,age);//先调用下父类的call方法,把this作为person里的this以及将name,age传进去
this.className = className;
}
// Object.creat(对象)是创建一个空对象,这里是将person的prototype属性'赋值'给student的prototype属性,说赋值是不对的,应该说是继承给,这里用Object.creat()这种方法,而不用Student.prototype = Person.prototype;主要是如果这样的话如果给student添加属性,Person也会相应的增加这个属性,这不是我们想要的,现在这样做是不会影响Person中的属性的
Student.prototype = Object.creat(Person.prototype);
Student.prototype.constructor = Student;//这条语句没有必要写,因为本来就是Student
Student.prototype.hi = function(){
console.log("Hi,my name is" + this.name +",I am" + this.age +"years old now and from" + this.className + ".");
}
//这里是给student.prototype添加一个learn属性,并且给他赋值一个函数对象
Student.prototype.learn = function(subject){
console.log(this.name + "is learning" + subject + "at" + this.className)
}
//test
//创建一个实例对象wenxiaoli
var wenxiaoli = new Student('wenxiali',27,'Class 3,grade 2');
wenxiaoli.hi();//Hi,my name is wenxiaoli,I am 27 years old now,and form Class 3,grade 2
wenxiaoli.LEGS_NUM;//2
wenxiaoli.walk();//wenxiaoli is walking...
wenxiaoli.learn("math");//wenxiali is learning math,at Class 3, grade 2
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于