关于Javascript类的更多问题

时间:2012-12-04 08:06:08

标签: javascript jquery

我已经测试了很多关于制作课程的内容,现在我终于发现了它是如何工作的,这就是我想让课堂变得简单明了,而不会发送垃圾邮件'这个'

enter image description here

结果就是这样,现在我只有两个问题:

  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>
    

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

向返回其自身属性的对象添加方法是无用的。删除它并正常访问属性:

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

你可以像这样访问它:

redsheep.options.eat