私は JavaScript 用の新しい OOP モデルに取り組んでいます。オブジェクトのメソッドを列挙可能にするのが正しいのか、それともデータ メンバーだけにするのが正しいのか疑問に思っています。どちらにもある程度の意味があり、おそらく明確な答えはありません。
独自のメソッドを列挙可能にし、継承されたメソッドを列挙できないようにすることもできます...
とはいえ、継承されている場合でも、すべてのデータメンバーを列挙可能にすることは、とにかく理にかなっていると思います。
更新:これは、人々が答えていることからは明らかではないようです。ユーザーが次のようなものを記述してクラスを宣言できるようにする OOP モデルを作成しています。
更新 2 : プロジェクトが終了するまでの間に、これはOoJsになりました。その中で、メソッドを含むユーザー定義のプロパティは列挙可能ですが、フレームワークによって追加されたプロパティは列挙できません。
;(function( namespace )
{
'use strict';
namespace.Shape = Shape
var Static = namespace.OoJs.setupClass( "Shape" )
// Data members
//
Static.canvas = null
Static.Protected( "canvas" ) // Protected members
Static.Public () // Public members
// constructor
//
function Shape()
{
// Data members
//
this.sides = null
// Private methods
//
this.init = init
this.Protected( "sides" ) // Protected members
var iFace = this.Public( getOffset ) // Public interface
this.init() // for example
return iFace
}
// Method definitions
//
function init (){ /*do something useful*/ }
function getOffset(){ return [ this.x, this.y ] }
})( window )
したがって、問題は、これを使用してクラスを宣言する場合、メソッドを列挙可能にするかどうかを想定/希望するか、または列挙可能にするかどうかをクラス全体またはメンバーごとに構成する方法があるかどうかです。