0

Javascript では、rotationSetting を手動で更新するたびに、rotation.rotationSetting = 7 のように、speed.steps# がオブジェクトによって自動的に更新されるようにしようとしています。

現在、rotationSetting はオブジェクトではないため、「Uncaught TypeError: Object.defineProperties called on-object」というエラーが表示されます。どうすればこれを回避し、目的を達成できますか?

var rotation = function() {
    var rotationId;
    var rotationList = [];
    var rotationSetting = 3; 

    var speed = {  
        step1 : 0, 
        step2 : 0, 
        step3 : 0, 
        step4 : 0, 
    }  

    Object.defineProperties(rotationSetting, {
        set: function(rotationSetting, speed) {
            this.step1 = rotationSetting * 1000;
            this.step2 = this.step1 + 1000;
            this.step3 = this.step2 + this.step1;
            this.step4 = this.step3 + 1000;
        }  
    }) 
    return {
        rotationId : rotationId,
        rotationList : rotationList,
        rotationSetting : rotationSetting,
        speed : speed,
    }  
}();
4

3 に答える 3

1

rotationSettingはプロパティではなく、ローカル スコープの変数です。したがって、その上で使用することはできませんObject.defineProperty

正しい使い方は次のとおりです。

Object.defineProperty(obj, 'rotationSetting', {
    set: ...
});

obj呼び出し元に返すオブジェクトはどこにありますか。

削除せずにこれを行うvar rotationSettingと、すでに宣言した変数 .rotationSettingthis.rotationSetting

于 2013-10-24T14:36:45.470 に答える