我知道Javascript不支持类,所以我创建了一个Cube
对象,然后声明了它的原型方法。在Cube
内,我想创建一个flip
对象,其中包含更多方法:
// Create Cube class
var Cube = function(){
this.x = 0;
this.y = 0;
//...
}
// Add methods to Cube prototype
Cube.prototype = {
initialize: function(){
//...
},
// Adding sub-functions within flip
flip: {
start: function(){
console.log(this.x); // This.x is undefined!
},
end: function(){
console.log("Ending flip");
}
},
getPos: function(){
console.log(this.x); // Correctly outputs 0
}
// Declare instance of Cube
var cubeInstance = new Cube();
cubeInstance.flip.start();
但是,我在this
内的flip.start()
范围错误,因为它会输出flip
对象,而不是我想要的Cube
对象:
Object { start: Cube.prototype.flip.start(), end: Cube.prototype.flip.end() }
您建议我这样做cubeInstance.flip.start();
会触发start()
方法,但我仍然可以访问Cube
变量(即this.x和this.y)?