创建对象
首先了解一下js的原型对象
js对每个创建的对象都会设置一个原型对象,指向它的原型对象
当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没找到,就一直上溯到object.prototype对象,最后,如果没有找到,就只能返回undefind
例如数组
var arr=[1,2,30]
原型链
arr---->Array.prototype------->object.prototype------>null
Array.prototype定义的一些方法就可以用
当我们创建一个函数
function food(){
}
原型链
food------>Function.prototype------->Object.prototype------>null
构造函数
除了直接用{}创建一个对象外,js还可以用一种构造函数来创建对象,它的用法是,先定义一个构造函数
function Student(name){
this.name=name;
this.root=function(){
alter("aaa");
}
}
有人出声了,这这这。。不就是个普通函数吗
这的确是个普通函数,但是在js中,可以用new来调用这个函数并返回一个对象
var xiao=new Student('小明');
xiao.name;//小明
xiao.root();//aaa
原型链
xiao ----> Student.prototype ----> Object.prototype ----> null
共享一个函数
function Student(name){
this.name=name;
}
//共享的函数
Student.prototype.Say=function(){
}
ES6新特性Class继承
这个增加的特性,如果学过java的话简直就是手到擒来
当我们写共享函数的时候是不是很麻烦
如果用class可以这样写
Class Student{
construtor(name){
this.name=name;
}
say(){
}
}
construtor构造函数学过java的对这个肯定熟悉吧
当然它还有继承extends就很nice
class PrimaryStudent extends Student{
constructor(name){
super(name);
}
myGread(){}
}