0

indexeddb 関数「delete」を作成しようとしています。JS では次のようになります。

var transaction = db.transaction('objectStore','readwrite');
var objectStore = transaction.objectStore('objectStore');
objectStore.delete(id);

ただし、CSで書くと:

transaction = db.transaction 'objectStore','readWrite'
objectStore = transaction.objectStore 'objectStore'
objectStore.delete(id)

もちろん、それは出力します:

...
objectStore["delete"](id);

「delete」という IDBTransaction のメソッドは作成していませんが、使用する必要があります。CS が "delete" メソッドをエスケープしてオブジェクトの "delete" キーに変えないようにするにはどうすればよいですか?

4

2 に答える 2

3

JavaScript のバージョンが であることを気にするのはなぜobjectStore["delete"](id)ですか? と同じobjectStore.delete(id)です。

たとえば、CoffeeScript で次のように言うと:

class B
    m: (x) -> console.log("B.m(#{x})")
class C extends B

c = new C
c.m('a')
c['m']('b')

最後の 2 行は、次の JavaScript として出力されます。

c.m('a');
c['m']('b');

しかし、どちらも同じメソッドを呼び出します。

デモ: http://jsfiddle.net/ambiguous/XvNzB/

同様に、JavaScript で次のように言うと:

var o = {
    m: function(x) { console.log('m', x) }
};
o.m('a');
o['m']('b');

最後の 2 行は同じメソッドを呼び出します。

デモ: http://jsfiddle.net/ambiguous/Y3eUW/

于 2013-08-02T19:38:09.547 に答える
3

バッククォートを使用して、生の Javascript を通過させます。

`objectStore.delete(id)`

逐語的にコンパイルされます。CS と JS を解釈するための私のお気に入りのサイトで試してみてください: http://js2coffee.org/#coffee2js

transaction = db.transaction 'objectStore','readWrite'
objectStore = transaction.objectStore 'objectStore'
`objectStore.delete(id)`

になる

var objectStore, transaction;

transaction = db.transaction('objectStore', 'readWrite');

objectStore = transaction.objectStore('objectStore');

objectStore.delete(id);
于 2013-08-02T19:04:52.077 に答える