2014-01-22 85 views
2

是有可能實現的算術運算符在node.js中C++的插件?實現JS的算術運算符在node.js中C++插件

因此,如果myclass是一個從C++類打包的JS對象,我可以在包裝的C++函數的類中實現javascript「+」運算符,以便下面的代碼可以工作嗎?

var a = new myclass(); 
var b = new myclass(); 
var c = a + b; 

它將允許在適當的對象的算術運算的一個更優雅的處理(如果MyClass的表示例如向量或矩陣類)。目前,唯一的解決方案是宣佈正常的功能來處理運營商,如:

var c=a.add(b); 

但它不好。我希望有人知道v8內部可以回答這個問題。

+0

爲了什麼目的呢?我不完全確定我明白。有可能你只是問「我可以爲'myclass'類型的兩個對象定義'+',答案是_yes,C++支持operator overloading_。 –

+0

我非常懷疑這是可能的。然而,運營商超載並不是魔術。神奇的是按類型重載方法,這會更有用。可悲的是,我懷疑這也是可能的。 – Homer6

+0

感謝您的回答。我不是在講C++中的運算符重載,而是在C++ addon類中實現javascript +運算符。這個問題是有道理的,因爲我試圖實現一些矩陣類的c + +端,並有一個自然的方式相應的JavaScript對象的行爲。因爲我沒有看到更好的方式,所以我將只實現函數.add(object),.substract(object)等。 – Nunki

回答

0

不幸的是,+運營商的行爲沒有暴露修改。

的ECMA-262規範定義的JavaScript +操作者定義爲任一兩數相加,或連接兩個字符串。要做到這一點,實施方式中調用.toString()和/或.valueOf()在物體上,然後執行級聯或添加。運營商本身並沒有涉及到實現C++代碼。 C++代碼只能影響處理返回的字符串/值。