JavaScript中的原型和构造函数

时间:2019-03-01 07:30:00

标签: javascript

var CinemaBooking = function(movieName, customerName) {
  this.customerName = customerName;
  this.movieName = movieName;
};

CinemaBooking.prototype.getCustomerName = function() {
  return this.customerName;
}

CinemaBooking.getMovieName = function() {
  return this.movieName;
}

var c1 = new CinemaBooking("BatMan", "Peter");

console.log(c1.getCustomerName()) // this is working fine
console.log(c1.getMovieName()) // function getMovieName is not defined 

我的疑问是:为什么getMovieName不能成为c1的方法,而getCustomerName却可以成为c1的方法?

P.S .:我是javascript的新手,它试图理解Beginning JavaScript和Eloquent JavaScript中的内容。

1 个答案:

答案 0 :(得分:0)

在Javascript中,函数也是对象,因此很容易拥有自己的方法。同时,原型继承会查看prototype对象链,以了解应将哪种方法传递给创建的对象。

所以,这样做:

CinemaBooking.getMovieName=function(){
    return this.movieName;
}

使函数对象CinemaBooking自己具有新方法。但是,这样做:

CinemaBooking.prototype.getCustomerName=function(){
    return this.customerName;
}

在将CinemaBooking函数用作构造函数(带有new)关键字时,为原型继承做准备。因此,当您使用CinemaBooking关键字创建新的new对象时,创建的对象将使用其构造函数附带的方法进行计数。

有关更多信息,请检查this