我有一个.js文件,其中包含一个名为PortraitOrder()的类的构造函数。它有一个名为CalculateCost()的方法。出于某种原因,我稍后调用了CalculateCost()方法,没有任何反应。
这是PortraitOrder()和CalculateCost()
function PortraitOrder(portrait, copies, size, buyer){
this.portrait = portrait;
this.copies = copies;
this.size = size;
this.buyer = buyer;
function CalculateCost(){
this.size = size;
this.copies = copies;
var price;
if(size == "wallet"){
price = 10;
}
else if(size == "8x10"){
price = 10;
}
else if(size == "4x6"){
price = 10;
}
else if(size == "11x14"){
price = 30;
}
else{
price = 10;
}
var cost = price * copies;
return cost;
}
}
以下是我调用方法的方法
var cost = CalculateCost().toFixed(2);
document.write("Price of Order: " + cost + "<br/>");
答案 0 :(得分:1)
你有一个似乎是一个范围问题。 CalculateCost()
是在PortraitOrder()
函数中声明的函数,因此在该函数之外无法访问它。尝试将CalculateCost()函数移到PortraitOrder()之外,并将所需的变量作为参数传递,如下所示:
function PortraitOrder() {
....
}
function CalculateCost(price, copies) {
....
}
然后,您可以将CalculateCost()调用为:
CalculateCost(price, copies);
如果您希望将CalculateCost()作为PortraitOrder()的一部分提供,您可以通过在变量中保留对它的引用来实现。
更新:从下面的评论中,您说您希望创建一个包含成员变量和函数的对象。以下是一些有用的链接:
答案 1 :(得分:1)
这不是在javascript中定义方法的方法。您应该像这样定义您的函数:
function PortraitOrder (parameters) {
//Constructor
}
PortraitOrder.prototype.calculateCost = function () {
//Your cost function
};
此外,可以在此处找到Javascript中对OOP的精彩介绍:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript