如何阻止Coffeescript转义关键字?

如何阻止Coffeescript转义关键字?,coffeescript,escaping,keyword,Coffeescript,Escaping,Keyword,我正在尝试编写一个indexeddb函数“delete”。在JS中应该是这样的: var transaction = db.transaction('objectStore','readwrite'); var objectStore = transaction.objectStore('objectStore'); objectStore.delete(id); 但是,当我用CS编写时: transaction = db.transaction 'objectStore','readWrit

我正在尝试编写一个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);

我没有为IDB事务编写名为“delete”的方法,但我必须使用它。如何防止CS转义“delete”方法并将其转换为对象中的“delete”键?

使用backticks传递裸Javascript:

`objectStore.delete(id)`
将通过逐字编译。在我最喜欢的网站上尝试在CS和JS之间进行翻译:

变成

var objectStore, transaction;

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

objectStore = transaction.objectStore('objectStore');

objectStore.delete(id);

使用反勾号传递裸Javascript:

`objectStore.delete(id)`
将通过逐字编译。在我最喜欢的网站上尝试在CS和JS之间进行翻译:

变成

var objectStore, transaction;

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

objectStore = transaction.objectStore('objectStore');

objectStore.delete(id);

为什么您关心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')
最后两行代码如下所示:

c.m('a');
c['m']('b');
var o = {
    m: function(x) { console.log('m', x) }
};
o.m('a');
o['m']('b');
但它们都调用相同的方法

演示:

类似地,如果您在JavaScript中这样说:

c.m('a');
c['m']('b');
var o = {
    m: function(x) { console.log('m', x) }
};
o.m('a');
o['m']('b');
最后两行调用相同的方法


演示:

为什么您关心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')
最后两行代码如下所示:

c.m('a');
c['m']('b');
var o = {
    m: function(x) { console.log('m', x) }
};
o.m('a');
o['m']('b');
但它们都调用相同的方法

演示:

类似地,如果您在JavaScript中这样说:

c.m('a');
c['m']('b');
var o = {
    m: function(x) { console.log('m', x) }
};
o.m('a');
o['m']('b');
最后两行调用相同的方法


演示:

我同意这不重要,但它抛出了一个DOM错误,而接受的答案没有。由于我没有编写indexedDB规范,我不知道为什么。如果你能提供一个例子,也许我们可以告诉你到底发生了什么。@MyTimeFinder我同意mu,这里还发生了一些事情。我同意这不重要,但它抛出了一个DOM错误,而被接受的答案却没有。由于我没有编写indexedDB规范,我不知道为什么。如果您能提供一个示例,也许我们可以告诉您到底发生了什么。@MyTimeFinder我同意mu的说法,这里还发生了其他事情。