构造函数,ECMAscript
2018-09-14 本文已影响0人
我是江海洋我真的是江海洋
1,在很多面向对象语言中都有类的概念,但是在javascript(es5)中没有类。而我们可以通过构造函数来模拟一个类。
(1)构造函数的首字母要大写,可以通过在函数中的this为类设置属性和方法
(2)通过new关键字创建类的实例
案例:
<script>
function Cat(){
this.name='miamiao';
this.age=12;
this.sayName=function(){
console.log('我们是猫类');
}
}
//创建类的实例
var cat=new Cat();
console.log(cat.name);
cat.sayName();
</script>
效果:
[
(3)通过传参的方式,在实例化对象的时候为对象设置属性
(4)一个构造函数可以生成多个对象的实例
构造函数的缺点就是:同一个构造函数的对象实例之间无法共享属性或方法
2,(1)为了解决构造函数的对象实例之间无法共享属性的缺点,js提供了prototype属性。
(2)每一个构造函数都有一个prototype属性,这个属性指向一个原型对象,这个原型对象上的所有属性和方法都可以被这个构造函数的实例使用
效果
for(let i=0;i<10;i++){
console.log(i);
}
console.log(i);//报错
console.log(i);//undefined
var i=5;
//es6
console.log(i);
let i=5;
//es5
var i=5;
var i=6;
console.log(i);
//es6用let命名
let i=5;
let i=6;
console.log(i);//报错
//常量中存储的实一个对象,了以改变这歌对象的属性
const obj={name:'jack',age:18};
obj.name='rose;
const obj={name:'jack',age:18};//const 声明同一个常量名
二、ECMAscript
(1)ECMAscript简称ES6,是JavaScript的标准,我们经常说的ES5,ES6等等,可以称作JavaScript的版本
之前学过的所有JavaScript特性,都是基于ES5版本的
ES6已更名为ES2015,ES7等后续的版本,我们都可以统称为ES2015+。
(2)变量和常量
之前一直使用var定义变量,在ES6版本中,我们可以使用let定义变量;增加了块级作用域;不存在变量提升;不允许重复声明(多次重复声明会报错);
(3)常量
在ES6中,不仅有变量,还增加了常量的概念,我们用const声明常亮,一旦声明,它的值就不能再改变(不能重复赋值),但如果常量中存储的是一个对象,可以改变这个对象的属性