0

私はクラスの作成についてかなりテストしましたが、ついにそれがどのように機能するかを発見しました。これが、スパムを送信せずにクラスをシンプルかつ明確にしたいことです。

ここに画像の説明を入力してください

結果はそのようなものです、今私は2つの質問しかありません:

  1. redsheep.options.show().sizes、この変数を呼び出すことですが、今は長すぎると思います。どうすればいいredsheep.sizesですか?
  2. redsheep.options.show().eatから継承せずsheepclass grass、になりましundefinedた。新しく作成されたオブジェクトのデフォルト値を作成するにはどうすればよいですか?

    <html>
    <head>
    <meta charset='utf-8'>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <title>A simple javascript function</title>
    <script type="text/javascript">
        $(document).ready(function(){
            var sheepclass = function(options){
                this.options = {'sizes' : 'thin',
                        'eat'   : 'grass',
                        'color' : 'white',
                        show    : function(){
                                    return {'color':options.color,
                                             'eat':options.eat,
                                             'sizes':options.sizes
                                            };
                                 }
                 }
            }
    
            var blacksheep = new sheepclass({'color':'black'});
            var redsheep   = new sheepclass({'color':'red','sizes':'fat'});
    
            $('div').append('<p>blackcsheep color : ' +
                            blacksheep.options.show().color);
            $('div').append('<p>redsheep color : ' + 
                            redsheep.options.show().color +
                            '<p>redsheep size:' +
                            redsheep.options.show().sizes +
                            '<p> redsheep eat:' + 
                            redsheep.options.show().eat);
        })
    </script>
    <style>
        div{display:block;width:800px;height:400px;border:2px solid red;}
    </style>
    </head>
    <body>
        <div>
              Result:
        </div>
    </body>
    </html>
    
4

2 に答える 2

0

そのようなことはするでしょう:

var sheepclass = function(options) {
    this.sizes = options.sizes || 'thin';
    this.eat = options.eat || 'grass';
    this.color = options.color || 'white';
}

このようにして、プロパティに直接アクセスできます(たとえばを使用してblacksheep.sizes)。

var blacksheep = new sheepclass({'color':'black'});
console.log(blacksheep.sizes); // prints 'thin'
于 2012-12-04T08:15:20.973 に答える
0

独自のプロパティを返すオブジェクトにメソッドを追加しても意味がありません。それを削除し、通常どおりプロパティにアクセスします。

var sheepclass = function(options) {
    this.options = $.extend({
        'sizes': 'thin',
        'eat': 'grass',
        'color': 'white',
    }, options);
}

次のようにアクセスできます。

redsheep.options.eat
于 2012-12-04T08:17:44.223 に答える