2012-06-13 20 views
3

我回來「原始」 JavaScript和我寫這樣的類:如何烘乾原型javascript方法定義?

var Person; 

Person = (function() { 

    function Person() {} 

    Person.prototype.run = function() {}; 

    Person.prototype.jump = function() {}; 

    Person.prototype.talk = function() {}; 

    return Person; 

})(); 

我覺得像Person.prototype的重複不是很乾:這也是很難避免換行。有解決這個問題的常見方法嗎?例如,一個可以分配給Person.prototype小變像cls,這將使該行看起來更像

cls.run = function() {}; 

...但可能是過於標新立異。

回答

4

因爲你沒有在原型任何你可以在新的對象只是指定給它:

Person.prototype = { 
    run: function() {}, 
    jump: function() {}, 
    walk: function() {} 
}; 

否則,你可以使用功能,如jQuery的$.extend()合併兩個對象:

$.extend(Person.prototype, { 
    run: function() {}, 
    jump: function() {}, 
    walk: function() {} 
}); 
+0

啊我完全忘了那個... + 1。 – hvgotcodes

2

這不是DRY的真正含義。當它,我必須寫'如果'和'功能'很多。我真的不能忍受'回報'和'爲了'。 ;)

DRY用於複製和粘貼功能時,導致代碼臃腫且維護成本高。在這種情況下,您更多地抱怨語言語法。

順便說一下,你可能通過定義對象的方法超前(即更多幹)許多人。

說了這麼多,coffeescript可以讓你不那麼冗長。不那麼冗長。很多時候你不需要括號或括號,而且你根本不需要原型。

+0

好吧,重複'Person'有點醜 - 如果你決定重命名它,你必須在一個大對象中改變很多地方。 – ThiefMaster