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 回答