Javascript 对象括号表示法和 requirejs

标签 javascript node.js oop requirejs

我正在开发一个迷你游戏项目,目的是学习 javascript、node 等。我对所有这些都是新手,我想知道如何以正确的方式创建原型(prototype),尤其是使用 requireJS。我对它和模块等了解得越多,我就越困惑;-) 例如

我怎样才能用我喜欢的括号表示法编写下面的对象,因为它会节省我很多“this”并使其更具可读性......

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 继承正确的方式。

非常感谢。

最佳答案

要使用对象作为原型(prototype)(而不是第一个示例中的构造函数原型(prototype)),请使用 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');

关于Javascript 对象括号表示法和 requirejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871631/

相关文章:

java - 工厂模式和策略模式

c# - 您希望设计架构具备哪些品质,以便编码团队可以轻松实现?

javascript - 使用 "let"关键字的 block 作用域

javascript - 在 MongoDB 中,为什么搜索不存在的电子邮件会使我的整个应用程序崩溃

javascript - 对对象类型数组的属性求和并将它们连接为单个对象

javascript - npm 安装错误 -> Windows_NT 6.1.7601

javascript - (ReactJs) 如何在另一个组件中包含多个组件?

javascript - 索引怎么能同时是两个东西呢?

node.js - Microsoft Teams - 深层链接到机器人选项卡

oop - 我可以在这里应用 Liskov 替换原则吗