自定义构造函数以及类class的用法

我们通过构造函数来创建一个对象
构造函数创建的时候和普通函数一样,只不过构造函数通常以大写字母开头
我们通过new 运算符来调用构造函数
在new 一个构造函数的时候都执行了哪些那

(1) 创建一个新对象;
(2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;
(3) 执行构造函数中的代码(为这个新对象添加属性) ;
(4) 返回新对象。

function Point(x, y) {
//为新对象添加x,y属性以及f方法
  this.x = x;
  this.y = y;
  this.f = function(){
    return `${x}${y}`
  }
}
//prototype方法可以给对象添加属性和方法(函数也是一个对象,添加toString方法)
Point.prototype.toString = function () {
  return '(' + this.x + ', ' + this.y + ')';
};
var p = new Point(1, 3);
console.log('p=========',p);
var a = p.toString()
var b = p.f()
console.log('a=========',a);
console.log('b=========',b);

打印的结果为
p========= Point { x: 1, y: 3, f: [Function (anonymous)] }
a========= (1, 3)
b========= 13

使用es6的class方法也可以直接创建

class Point {
//通过constructor方法给对象创建属性
  constructor(x,y){
    this.x = x;
    this.y = y;
  }
  //直接定义函数来给对象创建方法,只不过在定义方法的时候,直接使用x和y是获取不到参数的
  toString(){
    return `(${this.x},${this.y})`
    //return `(${x},${y})`     x和y取不到
  }
}
Point.prototype.f = function(){
  return `${this.x}${this.y}`
}
var p = new Point(1,2);
console.log('p=========',p);
var a = p.toString()
console.log('a=========',a);
var b = p.f()
console.log('b=========',b);

打印结果
p========= Point { x: 1, y: 2 }
a========= (1,2)
b========= 12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值