如何在经典的jscript中创建一个类?

时间:2011-06-18 22:18:38

标签: javascript

如何在经典的jscript中创建一个类? (不是jscript.net)

并且,如何引用这个类?。

我试过

class someclass {


}

但它不起作用。

6 个答案:

答案 0 :(得分:6)

jscript中没有类。您可以创建一个对象构造函数:

function someclass() {
  this.answer = 42;
}

你像课一样使用它:

var obj = new someclass();

要制作方法,可以在其原型中添加函数:

someclass.prototype.getAnswer = function() {
  return this.answer;
}

用法:

var ans = obj.getAnswer();

答案 1 :(得分:3)

没有这样的类,但这是一个如何获得基本的面向对象功能的简单示例。如果这就是你所需要的,那很好,但是如果你追求其他类的功能,比如继承,那么比我自己更有知识的人将不得不提供帮助。

function SomeClass(n) {
    this.some_property = n;
    this.some_method = function() {
        alert(this.some_property);
    };
}

var foo = new SomeClass(3);
var bar = new SomeClass(4);
foo.some_method();
bar.some_property += 2;
bar.some_method();

答案 2 :(得分:2)

你真的没有关于Javascript的课程,但你有类似的东西。 Check this example on jsFiddle

var classA = function() {     // declaring a "class"
    this.something = "Text";  // a public class field
};

classA.prototype.b = " b ";   // a class field
classA.c = "c";               // a static field
classA.prototype.d = function(x) { // a public class method
};
classA.e = function(x){     // a public static method
};

var a = new classA();       // instantiate a class

Read more on MDC...

答案 3 :(得分:1)

使用类的名称定义函数。其中定义为this.whatever的任何var都将充当类成员:

function SomeClass() {
  this.a;
  this.b;
}

然后向原型添加方法:

SomeClass.prototype.methodA = function() {
  this.a++;
}

SomeClass.prototype.methodB = function() {
  this.b++;
}

我相信你也可以像这样在构造函数中定义方法,但是我很长时间没有使用这种语法。

function SomeClass {
   this.a = 0;

   // Method definition
   this.methodA = function() {
      this.a++;
   }
}

答案 4 :(得分:0)

忍受我,因为我自己只是隐约知道:

Javascript没有课程。它有对象。要复制类,请创建一个对象。要创建该“类”的“实例”,请复制该对象。有几种方法可以做到这一点。一种是创建一个返回一个对象的函数,然后调用该函数,如下所示:

function Car(brand, year) {
return {
brand: brand,
year: year
}
}
var modelT = Car("Ford", 1900); //or whenever the model T came out
modelT.brand == "Ford" //true
modelT.year == 1900; //true 

另一种方法是创建一个作为函数的对象并创建该对象的“新”。问题是你必须使用new,这是相当误导的。

var Car = function(make, year) {
    this.make = make;
    this.year = year;
};
var x =  new Car("ford", 1990);
//same tests hold true from earlier example

在我看来,最好的方法是使用Object.create因为它最能代表实际发生的事情:

var Car = (function() {
    var self = Object.create({}, {
        make: {
value: "Ford"
}
year: {
value: 1900
}
    });
    return self;
})();
var modelT = Object.create(Car, {
                        make: {
                            value: "Model T"
                        },
year: {
value: 1901
}
                    });

不幸的是,这非常麻烦。

编辑:

这是一个非常有用的资源:JavaScript "classes"

答案 5 :(得分:0)

Jscript中的类(.Net?):http://www.functionx.com/jscript/Lesson05.htm

Powershell支持它(以及VisualBasic,甚至F#)。现在,我看到这个问题说不在.net中。但是为了辩护,我正在搜索jscript类,而这正是我着陆的地方。

Add-Type @'
class FRectangle {
  var Length : double;
  var Height : double;
  function Perimeter() : double {
      return (Length + Height) * 2; }
  function Area() : double {
      return Length * Height;  } }
'@ -Language JScript


[frectangle]::new()


Length Height
------ ------
     0      0