es5 的面向对象是通过 new 一个构造函数实现的
es6 的面向对象是通过 class 实现的 es6 的 class 就是面向对象的语法糖(实现同样的功能 但是代码更少 更加简洁)
面向对象是一个概念或者编程思想,面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式
(在 js 中一切皆对象
比如说数组 object number string 等等 这些都是内置对象
那么怎么自定义对象
es5 的时候没有像后台语言一样的 class 这个概念 所以我们用函数当作构造函数来创建对象)
ES5面向对象案例
<script>
let num = 10;
let num2 = new Number(20);
console.log(num, num2);
// (
// 在 js 中一切皆对象
// 比如说数组 object number string 等等 这些都是内置对象
// 那么怎么自定义对象
// es5 的时候没有像后台语言一样的 class 这个概念 所以我们用函数当作构造函数来创建对象)
// 在面向对象的写法中 属性放在函数里 方法放在原型上 这样就能实现属性私有 方法共享
// 方法挂载在原型上就可以被所有的实例化对象使用
// 在es5中当一个函数 被当作 创建面向对象的 构造器去用的时候 它就变成了一个构造函数 一般来说 首字母大写 通过new 关键字调用
function Houyi(color) {
this.color = color;
}
Houyi.prototype.kill = function() {
alert("后羿会射箭,这个后羿的头发颜色是" + this.color);
};
let sundy = new Houyi("金色");
let xiaoming = new Houyi("白色");
// alert(sundy.color);
// alert(xiaoming.color);
sundy.kill();
</script>
ES6面向对象案例
<script>
// 在es6中有了class这个概念
class Houyi {
constructor(color) {
this.color = color;
}
//constructor这个单词本身就是构造器的意思 在new一个实例的时候 constructor会自动调用
kill() {
alert("这是后羿的大招,这个后羿的头发颜色是" + this.color);
}
}
let sundy = new Houyi("红色");
sundy.kill();
</script>