【重要】サービス終了のお知らせ

Works

CSS3でめくり効果

-webkit-transform: rotateY を使用して実装。Webkitのみ。 下記を参考に。 http://tympanus.net/codrops/2012/05/07/experimental-page-layout-inspired-by-flipboard/

  • 3430
  • 0

2010-08-18 1st

  • 2387
  • 4

オブジェクトの上書き

外部からのパラメータのオブジェクトを受け取り、内部のデフォルトパラメータオブジェクトとマージするため「$.extend」を使用すると値を束縛できない。 なんでだろう?? 以下、JS内の該当箇所。 //★o.paramsが上書きされ、hogeのtypeはfugaのtypeになる A : banana o.params = $.extend(o.params,params); //★上書きされないので正しい結果となる A : apple o.params = params; ※追記1 o.params = $.extend($.extend(true,{},o.params),params); とすることで正しい結果となった。 $.extendは新たなオブジェクトを生成しreturnではなく、 コピーされる側(第一引数のオブジェクト)のオブジェクトを上書きreturnしているので、大元のparamsも変わってしまう。 オブジェクトは参照渡しなので、大元のparamsを変更 するとhogeもfugaも変更される。 解決策として、 大元をディープコピーしたオブジェクトをコピーされる側にセットして、大元を変更させないようにする $.extend(true,{},o.params) o.params = params; この場合だとデフォルトとしてprototype.paramsでセットしていたプロパティが消えてしまう。 この例だと「params.defText」は削除されてしまう。 ※追記2:削除はされない。この例ではdefTextがないオブジェクトに上書きされるので、undefinedになる。__proto__.paramsを見ればdefTextaは残っている。 うーん。理解が足りない。 ※追記3 そもそもcreateObjでディープコピーすれば良いのか。。

  • 1460
  • 0

Skills

Hot tags

Categories

HTML / CSS / JavaScript