2009年11月5日星期四

[note]Javascript对象的属性的获取

起因:今天遇到一个JS的问题,代码如下:

var object = {font-size : 50,
                     font-name : 'seria',
                     fill : 'red'}

这样写是会报错的,原因就在于“-”符号,不能作为变量名。
有的时候使用jQuery的函数extend来为对象添加新属性,如果希望属性中有“-”就会有问题,不过可以改为:

var object = {};
$.extend = (object, {'font-size' : 50,
                     'font-name' : 'seria',
                     fill : 'red'});

这样就可以使用了。这是因为extend函数是使用“var name in options”来取出变量,操作时也使用[name],代码如下:

for ( var name in options ) {
                var src = target[ name ], copy = options[ name ];

                // Prevent never-ending loop
                if ( target === copy )
                    continue;

                // Recurse if we're merging object values
                if ( deep && copy && typeof copy === "object" && !copy.nodeType )
                    target[ name ] = jQuery.extend( deep,
                        // Never move original objects, clone them
                        src || ( copy.length != null ? [ ] : { } )
                    , copy );

                // Don't bring in undefined values
                else if ( copy !== undefined )
                    target[ name ] = copy;

            }

结果:所以如下代码是错误的:

var object = {'f-f':2};
alert(object.'f-f');

而如下代码是正确的,js的对象都是“键-值”形式的!

var object = {'f-f':2};
alert(object['f-f']);

没有评论: