私はこれが投票を下げることを知っています:)、しかし誰かが似たようなことに遭遇した場合に備えて尋ねなければなりません.
コードを複製するにはかなりの労力がかかるため、コードを投稿できません。
しかし、要するに、私はオブジェクト テーブルを持っています。このオブジェクトには、複製 (Table.prototype.duplicate)、回転 (Table.prototype.rotate) などと呼ばれるいくつかの関数があります。
したがって、次のような結果になります。
var Table = function(o){
$.extend(this, o);
console.log(this._options.rotate); //Returns 49 -- How does it seems to skip?
}
Table.prototype.duplicate = function(){
console.log(this.rotate()); //Returns 49 -- this is set from elsewhere, not in this example
var n = {}
n._options = {
rotate:this.rotate()
}
console.log(this.rotate()); //Returns 49
console.log(n._options.rotate); //Returns 49
console.log(n); //Returns {_options:{rotate:0}} -- Why and HOW??
return n;
}
Table.prototype.rotate = function(){
//returns css transform angle
}
var table = new Table();
var nt = table.duplicate();
console.log(nt); //Returns {_options:{rotate:0}} -- still 0 here, but look in constructor
var table2 = new Table(nt);
コードはそれよりも複雑ですが、それが要点です。基本的に、console.log が 2 つ連続すると、異なる結果が生成されるようです。
関数の呼び出し後も、値 0 が報告されます。しかし、コンストラクターに戻されると、再びその値になります。
なぜ私がこのようなものを見ているのか考えられますか?
ありがとう。
ソリューション Felix King が指摘したように、JSON.stringify(n) を使用すると、Webkit の遅延読み込み値ではなく、現在の値が取得されます