龙空技术网

前端开发教程:Javascript中如何定义类?

鹅是程序猿 284

前言:

当前姐妹们对“js定义可类”大致比较注重,同学们都想要知道一些“js定义可类”的相关资讯。那么小编也在网上收集了一些关于“js定义可类””的相关文章,希望你们能喜欢,我们一起来学习一下吧!

javascript

Javascript虽然不是面向对象语言,但是我们一样可以实现类的定义,工作中我们定义类一般用下面的方式,如下:

<script type="text/javascript"> function Animal(name, species){ this.name = name; this.species = species; } Animal.prototype.walk = function (){ return this.name + "是" + this.species + ",它会抓老鼠!"; } Animal.prototype.swim = function () { return this.name + "是" + this.species + ",它会游泳!"; } var obj = new Animal("咪咪", "猫");//通过new关键词创建对象 console.log(obj.walk()); var obj = new Animal("旺旺", "狗");//通过new关键词创建对象 console.log(obj.swim());</script>

运行结果:

这样的写法相对于其它传统面向对象语言来讲,是不是很不一样?

可喜的是2015年6月正式发布了ECMAScript 6(以下简称ES6)。它是JavaScript语言的下一代标准,ES6引入了Class这个概念,会后端开发的小伙伴都知道java和c#都用class来定义类,上面的代码用ES6改造后如下:

<script type="text/javascript"> class Animal { constructor(name, species) {//constructor是一个构造方法,用来接收参数 this.name = name;//this代表的是实例对象 this.species = species; } walk() { return this.name + "是" + this.species + ",它会抓老鼠!"; } swim() { return this.name + "是" + this.species + ",它会抓看家!"; } } var obj = new Animal("咪咪", "猫");//通过new关键词创建对象 console.log(obj.walk()); var obj = new Animal("旺旺", "狗");//通过new关键词创建对象 console.log(obj.walk());</script>

这种写法是不是更加清晰,更像是一种面向对象的语言。

但是需要注意javascript依然不是一个面向对象的语言,ES6中的class只是一个语法糖,底层的实现方式还是一样的,为什么我会这样说,运行下面的代码。

console.log(typeof Animal)console.log(Animal===Animal.prototype.constructor);

运行结果:

不过很多的浏览器并不完全支持ES6,比如IE……

如果大家有更好的建议可以评论留言,欢迎大家转发。

标签: #js定义可类 #js定义类的方法 #js怎么定义类 #js定义类 #html通过什么定义类