[英]How to make a javascript class with a constructor method to initiate new objects / instances?
我正在嘗試使用javascript。 我正在嘗試制作一個“課堂”,但它並沒有像它應該的那樣工作。 我在啟動MyClass的新實例時遇到了問題。 看到js小提琴。 可以像在php中一樣向MyClass添加構造函數嗎? 我也不確定這是在javascript中定義“類”的方式。 所以任何幫助都會受到更多的贊賞。
http://jsfiddle.net/kasperfish/JnvFS/
var MyClass={
test:'hello',
hallo: function(){
alert(this.test);
},
setTest: function(x){
this.test=x;
}
}
MyClass.hallo();
MyClass.setTest('world');
MyClass.hallo();
//not working because MyClass is/does not have a constructor
x= new MyClass;//*
x.hallo();
* firebug:TypeError:MyClass不是構造函數
在JavaScript中,類的構造函數只是一個函數,成員可以在那里設置,也可以使用prototype
對象。 例如:
function MyClass(someArgument) {
// construction, init members of this
this.someField = someArgument;
this.test = 'a test';
}
// in addition, all members of `prototype` are automatically set on every
// new instance of MyClass.
MyClass.prototype.hallo = function(){
alert(this.test);
};
接着
var inst = new MyClass(42);
inst.hallo();
我建議你在JavaScript中閱讀基於原型的OOP。 它絕對不同於您可能習慣使用的PHP,它通常不會非常直觀。
你必須使你的MyClass
對象成為這樣的函數:
var MyClass = function() {
this.test = 'Hello';
};
MyClass.prototype.hello = function() {
alert(this.test);
};
MyClass.prototype.setTest = function( x ) {
this.test = x;
};
var myInstance = new MyClass();
myInstance.hello();
myInstance.setTest('World');
myInstance.hello();
好吧,首先你應該知道javascript沒有“類”,javascript數據結構確實是由對象構成的,但正如你從上面的代碼中看到的,對象本質上是鍵值對,與其他語言如php不同,實現在javascript中的OOP是非常不同的。
如果你想使用構造函數來創建對象的實例,那么嘗試使用函數,construtor創建你的“類”,也許這樣:
function MyClass(){
this.test ='hello';
this.hallo = function(){
alert(this.test);
};
this.setTest = function(x){
this.test=x;
};
}
var myClassInstance = new MyClass();
myClassInstance.hallo();
myClassInstance.setTest('world');
myClassInstance.hallo();
我希望這有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.