Class基本语法


关于es6的class简介:

ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

例子:

//ES5写法
function PointES5(x, y) {
this.x = x;
this.y = y;
}
PointES5.prototype.toString = function () {
return 'ES5:(' + this.x + ', ' + this.y + ')';
};
var p = new PointES5(1, 2); //定义类 ES6
class PointES6 {
constructor(x, y) {
this.x = x;
this.y = y;
this.say = function(){
return "hello";
}
}
toString() {
return 'ES6:(' + this.x + ', ' + this.y + ')';
}
}
var p2 = new PointES6(1, 2);
console.log(p2.hasOwnProperty('x')) // true
console.log(p2.hasOwnProperty('y')) // true
console.log(p2.hasOwnProperty('toString')) // false
console.log(p2.hasOwnProperty('say'))
console.log(p2.__proto__.hasOwnProperty('toString')) // true

es6 class中的constructor方法:

constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。

例子:

class Foo {
constructor(){
return Object.create(null);
}
}
new Foo() instanceof Foo // false

上面代码中,constructor函数返回一个全新的对象,结果导致实例对象不是Foo类的。

类的构造函数,不使用new是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。

类的实例对象:

生成类的实例对象的写法,与ES5完全一样,也是使用new命令。如果忘记加上new,像函数那样调用Class,将会报错。

与ES5一样,实例的属性除非显式定义在其本身(即定义在this对象上),否则都是定义在原型上(即定义在class上)。

20-ES6(3)class基本语法的更多相关文章

  1. Javascript——ES6( ECMAScript 6.0)语法

    ES6( ECMAScript 6.0)语法 一.let/const与var的区别 var 会进行预解析,let/const不会 var可以声明两个重名的变量,let/const不能 var没有块级作 ...

  2. ES6 class的基本语法-学习笔记

    1.基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰.更像面向对象编程的语法而已. 类的内部所有定义的方法,都是 ...

  3. Sublime Es6教程2-基本语法

    2.基本语法 let, const, forEach,for of class, extends, super arrow functions, template string, destructur ...

  4. ES6 class(基本语法+方法)

    静态属性与静态方法 1. 不会被类实例所拥有的属性与方法 只是类自身拥有2. 只能通过类调用 静态方法与普通方法重名,不会冲突static 关键字(静态方法) 静态属性类名.属性名 = 属性值; 1. ...

  5. ES6之对象的语法糖

    本文介绍下ES6中对象的一些拓展功能. 这三个语法糖在实际的项目开发中经常会见到.

  6. es6 class的基本语法

    ES5以及之前的版本,没有类的概念,但是聪明的JavaScript开发者,为了实现面向对象,创建了特殊的近类结构. ES5中创建类的方法:新建一个构造函数,定义一个方法并且赋值给构造函数的原型. 'u ...

  7. es6的一些基本语法

    首先说一下什么是es6: ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准; let 和 const 命令 let的基本用法: 上面代码在代码块之中,分别用l ...

  8. es6几个新增语法的使用----数组

    //数组的累加方法 let arr=[1,2,3]; let sum=arr.reduce((prev,cur)=>{ return prev+cur; }) console.log(sum)/ ...

  9. es6函数的新语法

    函数的默认值 function(x,y=10){ //赋予了y就有了默认值为10,如果y赋值了,就回被覆盖,否则就是默认值10 变量已经有默认值了,所以不用再次用let或者const声明啦 }

  10. es6 和 python 语法比较

    http://www.linchaoqun.com/html/cms/content.jsp?id=1509528630774 Python3笔记:Python与ECMAScript部分语法对比 ht ...

随机推荐

  1. CORS浏览器跨域

    在SO上发现一个解释跨域很棒的,忍不住拿过来 链接在此:http://stackoverflow.com/questions/10636611/how-does-access-control-allo ...

  2. fuck--Fix git command line spelling errors GitHub

    修复Git输入错误,挺有意思.git命令关键字如果输入错误,会提示最接近的正确关键字,如果提示内容是你想要的,输入'fuck',就能执行了. GitHub源码.源码生成exe,windows上运行. ...

  3. One of the best logo fonts "Klavika"

    Download link: http://fontsgeek.com/search?q=Klavika

  4. APP开发:对于IOS APP应用的推广渠道有哪些?

    亿合科技了解到,随着移动互联网时代的到来,苹果从2007年进入中国市场,一直备受大众喜爱,手机应用也层出不穷.那么对于那么多的IOS APP应用怎么能获得用户的喜爱呢?于是推广APP应用是需要做的,亿 ...

  5. iOS 版 MWeb 发布到自建 Wordpress 和 Metaweblog API 使用指南

    MWeb 的发布服务的使用方法是先增加发布服务,再使用.在 iOS 中,要增加发布服务,可以在首页中,点左上角的 "设置" 按钮,进入设置界面,并滑动到底部,就会看到增加发布服务的 ...

  6. 如何做好GPS平台软硬件集成测试

    集成测试是为了构建一个更大的系统或平台,这个系统的几个部分通常是由不同的团队或甚至不同的公司开发的,以前在做信息化的软件开发时,面临的集成测试通常是不同软件子系统之间的集成测试,往往被这一阶段的测试搞 ...

  7. php编写tcp服务器和客户端程序

    这是我从别的地方看到的. 1.修改php.ini,打开extension=php_sockets.dll 2.客户端程序 SocketClient.php <?php set_time_limi ...

  8. zip命令的常用选项

    zip命令的常用选项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大家都知道,在linux上一切皆文件,在实际生产环境中,如果我们需要部署一些系统的服务,我们会将一些软件包提前下 ...

  9. 基于DevExpress ImageSlider实现图片轮播效果

    工具:DevExpress版本为15.2.7 1.控件类型全称:DevExpress.XtraEditors.Controls.ImageSlider 2.控件所在程序集:DevExpress.Xtr ...

  10. AIX 5L 系统管理技术 —— 存储管理——卷组

    卷组 在安装系统时,就会创建一个rootvg卷组.包含自带硬盘(内置硬盘)和系统逻辑卷,一个系统只能有一个rootvg卷组.一般情况下rootvg卷组最好只包含自带硬盘. 一.创建卷组 在创建卷组之前 ...