Javascript对象括号表示法和requirejs

时间:2016-03-08 15:38:07

标签: javascript node.js oop requirejs

我正在研究一个迷你游戏项目,目的是学习javascript,节点等。我是所有这些的新手,我想知道如何以正确的方式创建原型,尤其是使用requireJS。我读的关于它和模块等越多,我就越困惑;-)例如

如何以括号表示法编写我喜欢的下面的Object,因为它可以节省很多"这个"并使我更具可读性......

define([],function(){

  Ball = function(){

    this.x = null,
    this.y = null,
    this.vel = null

  };

  Ball.prototype.serve = function(){};
  Ball.prototype.update = function(){};
  Ball.prototype.render = function(){};

return Ball;
});

当我用括号表示法编写时,我收到错误,Ball不是函数。

define([],function{

  var Ball = {
    x: null,
    y: null,
    vel: null
  };

  Ball.prototype.serve = function(){};
  Ball.prototype.update = function(){};
  Ball.prototype.render = function(){};

    return Ball;
});

如何使用requrejs继承正确的方法。

非常感谢。

1 个答案:

答案 0 :(得分:0)

要使用对象作为原型(而不是第一个示例中的构造函数原型),请使用Object.create

对象没有prototype属性用于建立继承,就像使用new

调用时的函数一样
var Ball = {
    x: null,
    y: null,
    vel: null,
    serve: function() {},
    update: function() {},
    render: function() {}
};
var ballInstance = Object.create(Ball);

可视化的一个好方法是了解

function MyClass(y) {
   this.y = y;
}

MyClass.prototype.x = 'x';

var myClass = new MyClass('yVal') 

相同
var myClass = Object.create(MyClass.prototype);
MyClass.call(myClass, 'yVal');