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中的内容。
答案 0 :(得分:0)
在Javascript中,函数也是对象,因此很容易拥有自己的方法。同时,原型继承会查看prototype
对象链,以了解应将哪种方法传递给创建的对象。
所以,这样做:
CinemaBooking.getMovieName=function(){
return this.movieName;
}
使函数对象CinemaBooking
自己具有新方法。但是,这样做:
CinemaBooking.prototype.getCustomerName=function(){
return this.customerName;
}
在将CinemaBooking函数用作构造函数(带有new
)关键字时,为原型继承做准备。因此,当您使用CinemaBooking
关键字创建新的new
对象时,创建的对象将使用其构造函数附带的方法进行计数。
有关更多信息,请检查this。