ES5构造函数语法
构造函数,就是一种函数,是专门用于生成对象的函数
实例化对象,就是通过构造函数,生成的对象,称为实例化对象
构造函数分为两种:一种是JavaScript程序定义好的构造函数,称为内置构造函数
一种是程序员自己定义的构造函数,称为自定义构造函数
构造函数和普通函数的区别:
1,构造函数一定要和关键词 new 一起使用
new 关键词具有特殊的功能, 会自动的给 构造函数中 定义一个对象,并且返回这个对象
我们只要对这个对象设定属性,设定方法就可以了
2,构造函数和其他函数区别
语法规范规定,构造函数,函数名称,第一个字母必须大写,使用大驼峰命名法
3,构造函数,给对象定义属性和方法的语法,与一般函数不同
实例化对象和普通的对象,没有任何的区别,只是建立方式不同而已
定义 prototype 是在函数之外定义的,调用构造函数,生成实例化对象,一定要在定义 prototype 之后,
否则生成的实例化对象,只有属性没有函数方法
function CrtObj(name, age) {
this.name = name;
this.age = age;
}
CrtObj.prototype.fun = function(){
console.log(this.name, this.age);
}
const obj = new CrtObj('张三',18);
obj.fun();
ES6构造函数语法
ES6与ES5构造函数语法对比,其功能作用、对象的属性和属性值,与ES5语法形式完全相同,只是语法不同。
ES6新增 1,class类,用于定义属性和属性值的关键词;
2,constructor构造器,在构造器中定义实例化。
构造器,专门接收封装类时的参数和给实例化对象定义属性和属性值
在给实例化对象定义属性和属性值时, 不知道实例化对象的具体名称,使用this来替换
注意:ES6语法定义的class类,不能被提前调用,无法执行预解析;ES5的function函数可以提前调用,但是只有属性没有方法。
class Fun{
constructor(name,age){
this.name = name;
this.age = age;
}
f(){
console.log(this.name , this.age);
}
}
const obj = new Fun('张三',18);
obj.f();