javascript中的“属性描述必须是对象”错误。无法理解为什么:(

时间:2012-08-20 04:24:28

标签: jquery oop

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

    $.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行。

1 个答案:

答案 0 :(得分:12)

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的东西。