<?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>2016-12-08T00:22:16+09:00</dc:date>
    <utime>1481124136</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/46.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:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/40.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/38.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/37.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/funnyjs/pages/36.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <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/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>
    <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/39.html">
    <title>props</title>
    <link>https://w.atwiki.jp/funnyjs/pages/39.html</link>
    <description>
      [[Object.defineProperties&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties]]をオブジェクトからアクセスできるようにしました。

Usage
let testObj = ({
   foo: 0,
   bar: 1
 }).props({
   baz: {
     get () {
       return bar + this.static4;
     },
     set (v) {
       this.bar = v - this.static4;
     }
   },
   static4: {
     value: 4
   }
 });

Result
この例では、bazはアクセサーとして機能するように設定しています。

 testObj.baz; // 5

 testObj.bar = 6;
 testObj.baz; // 10

 test0bj.baz = 3;
 testObj.bar; //-1
 
というように挙動します。

※この機能は上級者向けであり、理解できない方は飛ばして構いません。    </description>
    <dc:date>2016-11-18T12:22:20+09:00</dc:date>
    <utime>1479439340</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/38.html">
    <title>prop</title>
    <link>https://w.atwiki.jp/funnyjs/pages/38.html</link>
    <description>
      [[Object.defineProperty&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty]]をオブジェクトからアクセスできるようにしました。

Usage 1
let testObj = ({
   foo: 0,
   bar: 1
 }).prop(&#039;baz&#039;)({
   get () {
     return bar + 4;
   },
   set (v) {
     this.bar = v - 4;
   }
 });

Result
この例では、bazはアクセサーとして機能するように設定しています。

 testObj.baz; // 5

 testObj.bar = 6;
 testObj.baz; // 10

 test0bj.baz = 3;
 testObj.bar; //-1
 
というように挙動します。

※この機能は上級者向けであり、理解できない方は飛ばして構いません。    </description>
    <dc:date>2016-11-18T12:18:12+09:00</dc:date>
    <utime>1479439092</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/37.html">
    <title>values</title>
    <link>https://w.atwiki.jp/funnyjs/pages/37.html</link>
    <description>
      [[Object.values&gt;https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/values]]をオブジェクトからアクセスできるようにしました。

オブジェクトの値を取得します。

Usage 1
 ({
   foo: 0,
   bar: 1
 }).values

Result
 [0, 1]
を取得します。

※現段階では、この機能はPollyfill（代替した状態）です。
※v8での本実装が確認され次第、本実装のソースに移行します。    </description>
    <dc:date>2016-11-18T08:17:07+09:00</dc:date>
    <utime>1479424627</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/funnyjs/pages/36.html">
    <title>toArray</title>
    <link>https://w.atwiki.jp/funnyjs/pages/36.html</link>
    <description>
      Array-like オブジェクトをArrayに変換します。
ただし、lengthプロパティを所持している必要はありません。

Usage
 ({
   0: 1,
   1: 2,
   2: 3
 })
 .toArray;

Result
 [1, 2, 3]
が得られます。    </description>
    <dc:date>2016-11-16T13:28:37+09:00</dc:date>
    <utime>1479270517</utime>
  </item>
  </rdf:RDF>
