7

使用此代码我有这个问题:

$.fn.dxwShow = function (options)
{
    console.log(typeof(options));
    dxwShowSetOptions(options);

    setInterval(function(){
        dxwShowChange();
    }, dxwShowOptions.time);
};

var dxwShowOptions = {
    "transition" : "SlideToggle",
    "time": 1000
};

var dxwShowStatus = {
    current : 0
};

function dxwShowSetOptions(options)
{
    console.dir(typeof(options));

    dxwShowOptions = Object.create(dxwShowOptions, options);
}

function dxwShowChange()
{
    console.log(dxwShowOptions);
};

$(function()
{
    options = {
        "time": 700,
        "debug" : true
    };

    $("#dxwShow").dxwShow(options);
});

我想更新dxwShowOptions,所以我使用Object.create首先传递我想要复制的对象以及包含新参数的对象。错误在哪里?

PS :Chrome 说对象Object.create在线上。

4

1 回答 1

19

Object.create获取属性描述符的映射。options不是这样的清单。

请参阅https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create

如果您仍想使用Object.create,则需要将选项修改为更像

var options = {
    time: {
        enumerable: true,
        configurable: true,
        writable: true,
        value: 700
    },
    debug: {
        enumerable: true,
        configurable: true,
        writable: true,
        value: true
    }
};

但可能你想使用更像_.extend.

于 2012-08-20T04:51:16.603 回答