前端加油鸭!【FCC】JavaScript—面向对象

对象的创建

JavaScript中,对象的创建如下:

var car = {
  "wheels":4,
  "engines":1,
  "seats":5
};

除此之外,使用构造函数也可以创建对象
构造函数通常使用大写字母开头,以便把自己和其他普通函数区别开。(其他函数用驼峰命名法)
下面便是一个构造函数:

var Car = function() {
  this.wheels = 4;
  this.engines = 1;
  this.seats = 1;
};

在 构造函数 中, this 指向被此构造函数创建出来的对象 。所以,当我们在构造函数中写:

  this.wheels = 4;

这时,它创建出来的新对象将带有 wheels 属性,并且赋值为 4.
可以认为 构造函数 描述了它所创建出来的对象。

构造函数的使用

使用构造函数时,我们通过在它前面使用 new 关键字 来对它进行调用,如下:

var myCar = new Car();

myCar 现在成为了 Car 的一个 实例(instance),它被 构造函数 描述成下面的样子:

{
  wheels: 4,
  engines: 1,
  seats: 1
}

:要使用 new 关键字 去调用构造函数。因为只有这样,Javascript才知道这是要去构造一个新 对象 ,并且把构造函数中的 this 指向这个新对象。

现在,当 myCar (即 Car 的一个 实例 )创建后,他可以像普通对象一样被使用,包括创建、访问、修改它的属性等,就像我们使用其他对象一样。如下:

myCar.turboType = "twin";

我们的 myCar 变量现在有了一个 turboType 属性了,且值为 “twin” 。

但是我们不想总是创建相同的对象,怎么办呢?

为了解决这个问题,我们要向 构造函数 中添加 参数 。像下面这样:

var Car = function(wheels, seats, engines) {
  this.wheels = wheels;
  this.seats = seats;
  this.engines = engines;
};

现在,我们可以在调用 构造函数 时传入一组 参数 了。

var myCar = new Car(6, 3, 1);

这段代码将会使用这一组 参数 来创建出下面的对象:

{
  wheels: 6,
  seats: 3,
  engines: 1
}
构造函数中的方法

对象拥有自己的特征,称为 属性,对象还有自己的函数,称为 方法 。
前面的构造函数中, this 指向当前(将要被创建的)对象中的 公有属性 。我们也可以创建 私有属性 和 私有方法 ,它们两个在对象外部是不可访问的。
通过 var 关键字去创建变量,来替代我们使用 this 创建 属性 。

比如,我们想记录我们的car行驶的 speed ,但希望外面的代码对 speed 的修改只能是加速或减速(而不是变成字符串、直接赋值成某个速度等其他操作),下例展示了如何实现这种控制模式。

var Car = function() {
  // this is a private variable
  var speed = 10;

  // these are public methods
  this.accelerate = function(change) {
    speed += change;
  };

  this.decelerate = function() {
    speed -= 5;
  };

  this.getSpeed = function() {
    return speed;
  };
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值