码迷,mamicode.com
首页 > 其他好文 > 详细

es6的class关键字与es5的构造函数

时间:2019-08-09 13:39:06      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:es6   面向对象编程   image   on()   code   构造函数   函数   使用   this   

todo

构造函数:

function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function () {
  return ‘(‘ + this.x + ‘, ‘ + this.y + ‘)‘;
};

var p = new Point(1, 2);

console.log(p)
console.log(p.toString)

效果等同于

function Point(x, y) {
  this.x = x;
  this.y = y;
  this.toString = function () {
     return ‘(‘ + this.x + ‘, ‘ + this.y + ‘)‘;
  };
}

var p = new Point(1, 2);

console.log(p)
console.log(p.toString)

但是意义不一样,前者定义在生成对象的原型链中;
后者直接定义在属性中

 

结果:

技术图片

技术图片

 

可见:

1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写

2、构造函数和普通函数的区别在于:调用方式不一样。作用也不一样(构造函数用来新建实例对象)

3、调用方式不一样。
    a. 普通函数的调用方式:直接调用 person();
    b.构造函数的调用方式:需要使用new关键字来调用 new Person();

4、构造函数的函数名与类名相同:Person( ) 这个构造函数,Person 既是函数名,也是这个对象的类名

5、内部用this 来构造属性和方法 

class:

ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的class改写,就是下面这样。

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return ‘(‘ + this.x + ‘, ‘ + this.y + ‘)‘;
  }
}

 

es6的class关键字与es5的构造函数

标签:es6   面向对象编程   image   on()   code   构造函数   函数   使用   this   

原文地址:https://www.cnblogs.com/wangtong111/p/11326412.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!