我尝试使用sugar。以前我在一年前使用它,它以这样的方式运作良好:
> npm install sugar
test@1.0.0 D:\work\test\test
`-- sugar@2.0.4
> node
>> require('sugar');
{ [Function: Sugar]
.....
Array:
{ [Function: SugarChainable]
.....
compact: [Function: compact],
....
>> [1,null,2,undefined,3].compact()
TypeError: [1,null,2,undefined,3].compact is not a function
at repl:1:24
at ContextifyScript.Script.runInThisContext (vm.js:23:33)
at REPLServer.defaultEval (repl.js:339:29)
at bound (domain.js:280:14)
at REPLServer.runBound [as eval] (domain.js:293:12)
at REPLServer.onLine (repl.js:536:10)
at emitOne (events.js:101:20)
at REPLServer.emit (events.js:191:7)
at REPLServer.Interface._onLine (readline.js:241:10)
at REPLServer.Interface._line (readline.js:590:8)
现在有什么问题吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
从v2.0开始,原生扩展已成为选择加入,同时支持两种与库交互的新方式。 Sugar仍然相信本机的安全扩展,但有时候这是不合适的,现在这个选择掌握在用户手中。
因此您需要使用可链接的Sugar API:
var arr = new Sugar.Array([1,null,2,undefined,3]);
arr.compact();
这可以像这样制作一个单行:
(new Sugar.Array([1,null,2,undefined,3])).compact()
或扩展原生代:
Sugar.extend();
虽然扩展可能看起来更简单,但他们构建它的原因是您需要选择加入此功能。简单地说,扩展原型是危险的,因为多个库可能希望扩展相同的原型并且会导致其方法中的冲突。