在Javascript中使用原型

时间:2012-08-20 00:14:11

标签: javascript prototype

我很困惑我应该在哪里使用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

3 个答案:

答案 0 :(得分:2)

prototypenew关键字一起使用。请看以下示例:

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的原型对象模型。