2016-03-08 60 views
1

我正在學習一個小型遊戲項目,目的是學習JavaScript,節點等。我對所有這些都是新手,我想知道如何創建正確的方式,特別是requireJS的原型。我越讀它和模塊等,我越困惑;-)例如JavaScript對象括號表示法和requirejs

我怎麼能寫下面的對象在括號表示,我喜歡,因爲它會爲我節省了很多「這個」並使其對我來說更具有可讀性...

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; 
}); 

當我把它寫在括號標記我得到一個錯誤,球是不是一個函數。

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的正確方法。

非常感謝。

+0

「Bracket no tation「給你一個普通的對象,而不是一個函數。 – Pointy

+0

我明白了,謝謝。我什麼時候想要定義一個Object作爲函數(我可以這麼說嗎?)以及什麼時候作爲一個普通對象,或者何時以及爲什麼需要區分? –

回答

0

要使用對象作爲原型(而不是第一個示例中的構造函數原型),請使用Object.create

的對象不具有用於建立繼承一樣的功能,當它被稱爲與new

var Ball = { 
    x: null, 
    y: null, 
    vel: null, 
    serve: function() {}, 
    update: function() {}, 
    render: function() {} 
}; 
var ballInstance = Object.create(Ball); 

想象這樣的一個好辦法是瞭解一個prototype屬性,

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'); 
+0

請解釋downvote –

+0

非常感謝,幫助和現在的作品! –

相關問題