<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/funnyjs/">
    <title>funny.js</title>
    <link>http://w.atwiki.jp/funnyjs/</link>
    <atom:link href="https://w.atwiki.jp/funnyjs/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>funny.js</description>

    <dc:language>ja</dc:language>
    <dc:date>2017-05-16T19:13:34+09:00</dc:date>
    <utime>1494929614</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/40.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/26.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/46.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/44.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/43.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/42.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/41.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/40.html">
    <title>databind</title>
    <link>https://w.atwiki.jp/funnyjs/pages/40.html</link>
    <description>
      funny.js最大の特徴の一つ、databindについて説明します。
funny.jsでは、あるオブジェクトの$プロパティを使うことで、オブジェクトと対を成す自由なデータを埋め込むことができます。
これにより、レキシカルなthisの環境を提供します。
このデータバインドが最大の効果を発揮するのは、クライアントサイド上のjavascriptに元からある機能を阻害することなく、データへのアクセスを可能にするということです。
これにより、グローバルに定義されるものを最小限にしながら変数名を考え直す必要もなく…　というような小難しいことは飛ばして下の例を見てください。　もっと直感的です。

 let myButton = $d.make(&#039;button&#039;)({
   clicking (evt) {
     alert(this.$);
   },
 });
 myButton
 .bind(&#039;ここを呼び出すのは普通のjavascriptでは難しいけれども、funny.jsなら簡単なのです！&#039;)
 .in(&#039;test&#039;)
 .on(&#039;click&#039;)(myButton.clicking)(false);

こんなアラート文がこの行数で、オブジェクト指向を阻害することなくかけてしまいます。
ぇ？　ボタンじゃ嫌だ？　わかりました。

 let myImage = $d.make(&#039;img&#039;)({
   clicking (evt) {
     alert(this.$);
   },
 })
 myImage
 .bind(&#039;ここを呼び出すのは普通のjavascriptでは難しいけれども、funny.jsなら簡単なのです！&#039;)
 .on(&#039;click&#039;)(myButton.clicking)(false);

このように、発行したimgタグを使うこともできます。
バインドするデータは、どのようなデータでも紐付けることができます。    </description>
    <dc:date>2017-05-16T19:13:34+09:00</dc:date>
    <utime>1494929614</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/16.html">
    <title>wants</title>
    <link>https://w.atwiki.jp/funnyjs/pages/16.html</link>
    <description>
      wantsは、主語が変わると主体的意味が変わります。

-主語がオブジェクトである場合は、[[getPrototypeOf&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf]]と[[setPrototypeOf&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf]]へのアクセッサとなります。
Usage
 ({}).wants


-主語が[[関数&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function]]である場合は、その関数のprototype属性を指します。
Usage
 ([[function]] () {}).wants.[[ride]]({
   test () {
     alert(&#039;これは、プロトタイプチェーン内のtestメソッドです。&#039;);
   }
 })    </description>
    <dc:date>2017-05-16T19:06:30+09:00</dc:date>
    <utime>1494929190</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/26.html">
    <title>marge</title>
    <link>https://w.atwiki.jp/funnyjs/pages/26.html</link>
    <description>
      margeは、主語が違うと挙動が変わります。

オブジェクトの場合、与えられたオブジェクトのプロパティを追加した新しいオブジェクトを作ります。
既存のプロパティは上書きされます。

Usage
 ({
   foo: 0
 })
 .marge({
   foo: 3,
   bar: 4
 });

Result
 {
   foo: 3,
   bar: 4
 }
が得られます。

配列の場合、与えられたオブジェクトのプロパティを追加した新しいオブジェクトを作ります。
既存のプロパティは上書きされます。

Usage
 ([3, 4]).marge([5, 6]);

result
 [3, 4, 5, 6]
が得られます。

Return
統括後のオブジェクトを返答します。
メソッドチェインにご活用ください。    </description>
    <dc:date>2016-12-30T16:38:17+09:00</dc:date>
    <utime>1483083497</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/funnyjs/pages/2.html</link>
    <description>
      -[[ダウンロード&gt;download]]

-[[function&gt;function]]
--[[wants&gt;wants]]

-[[Object&gt;Object]]
--[[maker&gt;maker]]
--[[toArray&gt;toArray]]
--[[each(callback)&gt;each]]
--[[deep(callback)&gt;deep]]
--[[ride({})&gt;ride]]
--[[push({})&gt;push]]
--[[copy&gt;copy]]
--[[marge({})&gt;marge]]
--[[concat({}) ⇔ marge&gt;marge]]
--[[mix(callback)&gt;mix]]
--[[pick(callback)&gt;pick]]
--[[json&gt;json]]
--[[save(name)&gt;webStorage]]
--[[fix&gt;fix]]
--[[wants&gt;wants]]
--[[keys&gt;keys]]
--[[cue(array)&gt;cue]]
--[[swap&gt;swap]]
--[[values&gt;values]]
--[[prop(key)(definition)&gt;prop]]
--[[props(definition)&gt;props]]
--[[bind(value)&gt;databind]]
--[[explains&gt;explains]]
--[[owner&gt;owner]]
--[[has(key)&gt;has]]
--[[iterable(key)&gt;iterable]]
--[[$&gt;databind]]
--[[agent&gt;watch]]
--[[watch&gt;watch]]
&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2016-12-08T00:22:59+09:00</dc:date>
    <utime>1481124179</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/46.html">
    <title>watch</title>
    <link>https://w.atwiki.jp/funnyjs/pages/46.html</link>
    <description>
      [[Proxy&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy]]をバインドデータへ紐付けして、
バインドされたデータへの変更を監視出来ます。

Usage
 let test = ({})
 test.bind({
   foo: 0,
   bar: 1
 })
 .watch({
   get (t, k, h) {
     alert(k + &#039;　が参照されました！&#039;);
     return t[k];
   },
   set (t, k, v, h) {
     alert(k + &#039;　が　&#039; + t[k] + &#039;　から　&#039; + v + &#039;　へ変更されました。&#039;);
     t[k] = v;
     return true;
   }
 });

Result
バインドされたオブジェクトのプロパティを参照した場合、変更した場合、
それぞれで警告を表示します。

Return
そのオブジェクトを返します。
メソッドチェーンにご活用ください。    </description>
    <dc:date>2016-12-08T00:22:16+09:00</dc:date>
    <utime>1481124136</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/23.html">
    <title>ride</title>
    <link>https://w.atwiki.jp/funnyjs/pages/23.html</link>
    <description>
      この命令は、主語が変わると挙動が変わります。
この命令は、元のオブジェクトや配列を変更します（副作用があります。）

元のオブジェクトに、与えられたオブジェクトのプロパティを追加します。
この操作は、元のオブジェクトを変更します。
既存のプロパティは上書きされます。

Usage
 ({
   foo: 0
 })
 .ride({
   foo: 3,
   bar: 4
 });

Result
 {
   foo: 3,
   bar: 4
 }
が得られます。

Arrayの場合は、[[Array.push&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/push]]を実行します。

Usage
 ([3, 4])
 .ride(5);

Result
 [3, 4, 5]
が得られます。

この際、rideは次のIDに対して与えられた「何か」を代入しようとすることに注意してください。

Usage
 ([3, 4])
 .ride([5, 6]);

Result
 [3, 4, [5, 6]]
が得られます。

Return
変更済みのオブジェクトを返答します。
メソッドチェインにご活用ください。    </description>
    <dc:date>2016-12-04T05:05:19+09:00</dc:date>
    <utime>1480795519</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/44.html">
    <title>iterable</title>
    <link>https://w.atwiki.jp/funnyjs/pages/44.html</link>
    <description>
      [[Object.propertyIsEnumerable&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable]]をオブジェクトからアクセスできるようにしました。
funny.jsでは、この機能を使う代わりに[[.cue()&gt;cue]]を使うことを推奨します。
また、funny.jsでは　[[keys&gt;keys]]　でオブジェクトのキーのみを勝手に設定することも出来ます。

この機能を覚える必要はありません。    </description>
    <dc:date>2016-12-04T04:28:44+09:00</dc:date>
    <utime>1480793324</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/43.html">
    <title>has</title>
    <link>https://w.atwiki.jp/funnyjs/pages/43.html</link>
    <description>
      [[Object.hasOwnProperty&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty]]をオブジェクトからアクセスできるようにしました。
funny.jsでは、この機能を使う代わりに[[.cue()&gt;cue]]を使うことを推奨します。    </description>
    <dc:date>2016-12-04T04:22:50+09:00</dc:date>
    <utime>1480792970</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/42.html">
    <title>owner</title>
    <link>https://w.atwiki.jp/funnyjs/pages/42.html</link>
    <description>
      [[Object.getOwnPropertyNames&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames]]と[[Object.getOwnPropertySymbols&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols]]をオブジェクトからアクセスできるようにしました。

funny.jsでは、この機能を使う代わりに[[.cue()&gt;cue]]を使うことを推奨します。
この機能は将来的な実装を希望しています。
今はこの機能を覚える必要はありません。    </description>
    <dc:date>2016-12-04T04:21:21+09:00</dc:date>
    <utime>1480792881</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/41.html">
    <title>explains</title>
    <link>https://w.atwiki.jp/funnyjs/pages/41.html</link>
    <description>
      [[Object.getOwnPropertyDescriptor&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor]]をオブジェクトからアクセスできるようにしました。

オブジェクトの詳細なプロパティリストをオブジェクトとして取得します。
（この機能を明示的に利用する可能性は極めて低いです。）
（funny.js自体を使いたい場合は、この機能を使う必要はありません。）    </description>
    <dc:date>2016-12-04T04:10:37+09:00</dc:date>
    <utime>1480792237</utime>
  </item>
  </rdf:RDF>
