我很困惑我应该在哪里使用prototype来声明一个方法?我读到的是,如果我创建一个由原型声明的方法,所有实例都使用相同的引用,那么它是静态的还是不同的?因为我可以在原型方法中访问实例属性?但是在c#中,你无法在静态方法中达到类变量(而不是静态)?
一个例子:
function Calculator()
{
if(this === window){
return new Calculator();
}
this.Bar = "Instance Variable";
}
Calculator.prototype.SaySomething = function(thing){
return thing + " " + Bar;
}
Calculator().SaySomething("Test"); // Test Instance Variable
答案 0 :(得分:2)
prototype
与new
关键字一起使用。请看以下示例:
function Calculator(bar) {
this.Bar = bar;
}
Calculator.prototype.SaySomething = function(thing){
return thing + " " + this.Bar;
}
var calInstance = new Calendar("Instance Variable");
calInstance.SaySomething("Test");
答案 1 :(得分:1)
您正确地声明了prototyped方法,但错误地调用了它。 Calculator
不是静态对象,只是一个类,因此在创建对象实例时只能调用它的方法。
var calc = new Calculator();
calc.SaySomething('thing');
//this would return "thing Instance Variable"
简而言之,Javascript不使用类和实例方法,只使用实例方法。
答案 2 :(得分:1)
我建议你阅读Douglas Crockford撰写的JS The Good Parts。它将使您更好地理解JS的原型对象模型。