Articles of 原型

在Javascript中使用随机数字和运算符生成一个随机math公式

我想创build一个程序,应该打印出最简单的mathexpressionforms,如(21 + 13)* 56使用随机号码。 1到100 ,程序必须采取一个级别参数, 级别决定生成方程的长度 ,例如: 游戏必须产生具有加法+乘法运算符的方程,如(21 + 13)* 56 (使用方括号) —-level 2 75 – 54 = 21 62 + 15 = 77 88 / 22 = 4 93 + 22 = 115 90 * 11 = 990 –level 3 ( 21 + 13 ) * 56 = 1904 82 – 19 + […]

我如何正确地导入jQuery插件到Node.JS?

背景 我是Node.JS的新手,但对JavaScript和jQuery非常有经验。 我没有问题通过npm install jquery ,但是,在代码中引用插件是另一个挑战。 我已经回顾了这个类似的StackOverflow问题 ,并且该解决scheme似乎工作,但在我看来,实例化一个“假”的浏览器窗口和注入基于插件的function,每次你需要插件可能不是最有效的方法。 linq.js (是的,我知道js linq可以通过npm使用,但是和linq.js不一样)。 注:我所指的插件不依赖任何DOM元素; 在我的情况下,它只是通过各种数据函数运行JSON对象。 这就是为什么我不认为我需要实例化窗口对象。 题 如何在Node.JS应用程序中正确导入和使用jQuery插件?

自定义错误和蓝鸟捕获ErrorClass导致无意中的行为

我正在尝试实现自定义错误的模块。 应该可以使用这个模块在应用程序的require-statement中实例化一个单独的错误: var MyCustomError = require('custom-error')('MyCustomError'); 这是模块: 'use strict'; var _CACHE = {}; function initError(name) { function CustomError(message) { this.name = name; this.message = message; } CustomError.prototype = Object.create(Error.prototype); CustomError.prototype.constructor = CustomError; _CACHE[name] = CustomError; } function createCustomError(name) { if (!_CACHE[name]) { initError(name); } return _CACHE[name]; } module.exports = createCustomError; 上述的需求一class轮运作到目前为止。 现在,在我的服务中,我想明确地捕捉到这个错误: var MyCustomError = […]

你应该如何inheritanceEventEmitter节点?

我正在阅读这篇小文章,以了解从EventEmitterinheritance,但我有点困惑。 他这样做: function Door() { events.EventEmitter.call(this); this.open = function() { this.emit('open'); }; } Door.prototype.__proto__ = events.EventEmitter.prototype; https://gist.github.com/chevex/7646362 为什么他用自己的构造函数手动调用EventEmitter的构造函数呢? 另外,为什么他将原型的原型设置为EventEmitter的原型呢? 这对我来说非常混乱。 然后在评论中有人build议他这样做,而这看起来更优雅: function Door() { events.EventEmitter.call(this); this.open = function () { this.emit('open'); } } util.inherits(Door, events.EventEmitter); https://gist.github.com/chevex/7646447 这似乎比其他方式更干净,尽pipe这可能只是因为我不明白发生了什么事情。 如果util.inherits和第一个例子一样,我也不会感到惊讶。 第二个至less对我有点意义,但是我还是不明白为什么他们不这样做: function Door() { this.open = function () { this.emit('open'); } } Door.prototype = new events.EventEmitter(); https://gist.github.com/chevex/7646524 […]

在/从MongoDB中存储和检索JavaScript对象

我目前正在使用node-mongo-native驱动程序使用node.js和MongoDB。 我testing了一下使用Mongo控制台存储和检索JS对象。 我想通了,如果我存储一个包含函数/方法的对象,方法和函数也将被存储在集合中。 这很有趣,因为我认为函数不能存储在MongoDB中(除了system.js集合,正如Mongo文档所build议的那样)。 它不仅存储方法,而且实际上是对象的整个原型链的每个方法和成员。 除此之外,我不喜欢这种行为,认为这是不直观的,我不能拥有它。 我正在pipe理Mongo集合中的用户。 要做到这一点,我有一个用户对象包含用户的每个实例作为原型的所有用户方法。 用户对象本身只包含用户属性。 如果我将用户存储在Mongo集合中,我只想存储用户对象的属性。 没有原型成员,特别是没有原型方法。 目前我没有看到如何干净地做到这一点。 我想的选项可能是: 使用foreach和hasOwnProperty创build一个浅拷贝并将其存储在集合中。 为每个包含所有对象属性的用户添加一个数据属性,并可将其存储在集合中。 刚才我想起了这个:我也可以将所有原型属性设置为不可枚举,这样可以防止它们存储在集合中。 但是,反过来,我也遇到了相同的问题:从集合中加载用户时。 AFAIK没有办法在JavaScript创build后改变对象原型。 当Mongo实例化从集合中检索到的对象时,也无法指定要使用的原型。 所以基本上我总是得到使用Mongo从Objectinheritance的对象。 据我可以告诉我有2个选项从这一点恢复一个可用的用户对象: 创build一个从Userinheritance的新对象,并将结果对象上的每个属性复制到新创build的对象。 (与存储机制1和3兼容) 创build一个从Userinheritance的新对象,并将结果对象作为数据属性存储在新创build的对象上。 (兼容存储机制2) 我的假设,特别是关于指定查询结果原型的可能性,是否正确? 什么是正确的做法,为什么? 我当然不是第一个使用node.js在MongoDB中存储和复制对象的人。 目前我会用2/2的方法去。 我不是很喜欢它,但是它是最有效率的,也是唯一一个可以和API一起干净利落的工具。 不过,我更愿意听到API实际上并没有错,但我不知道如何正确使用它。 所以,请赐教:)

如何使用Uglify.jsparsing和迭代原型方法?

我想parsing一些JavasScript代码,使用uglify js 2列出给定“类”的所有方法。在我的情况下,TreeWalker返回一个name : null的节点,并且没有任何信息可以让父母得出结论。 有谁知道一个不同的方法? 我期望像name : "Test.method_name" 到目前为止,我尝试了以下… parsetests.js var UglifyJS = require("uglify-js2"); var util = require("util"); var code = require("fs").readFileSync("test.js").toString(); var toplevel = UglifyJS.parse(code); var log = function(obj, depth) { console.log(util.inspect(obj, showHidden=false, depth, colorize=true)); }; var toplevel = UglifyJS.parse(code); var walker = new UglifyJS.TreeWalker(function(node){ if (node instanceof UglifyJS.AST_Function ) { log(node, 2); […]

为什么JSON.stringify不序列化原型值?

我一直在处理一些JSONparsing,并最近在Node.js和浏览器中传入Javascript,并碰到了这个难题。 我使用构造函数创build的任何对象都不能完全通过JSON.stringify完全序列化,除非我单独初始化构造函数中的所有值! 这意味着我的原型在devise这些类时变得基本没用。 有人可以解释为什么以下不按我所期望的序列化? var ClassA = function () { this.initialisedValue = "You can see me!" }; ClassA.prototype = { initialisedValue : "You can't see me!", uninitialisedValue : "You can't see me!" }; var a = new ClassA(); var a_string = JSON.stringify(a); 怎么了: a_string == {“initialisedValue”:“你可以看到我!” } 我会期待: a_string == {“initialisedValue”:“你可以看到我!”,“uninitialisedValue”:“你看不到我!” }

基于路由dynamic加载Node.js模块

我正在使用快递在Node.js中做一个项目。 这是我的目录结构: root |-start.js |-server.js |-lib/ | api/ | user_getDetails.js | user_register.js lib/api/目录有一些与API相关的JS文件。 我需要做的是制作一种钩子系统,只要有一个API函数被快速HTTP服务器请求,它就会执行相应API处理程序中指定的任何操作。 这可能是令人困惑的,但希望你明白了。 Larry通过POST发送请求以获取用户详细信息。 服务器在lib/api中查找以查找与该请求关联的函数。 服务器执行操作并将数据发送回Larry。 希望你能帮助我。 我想这可以使用原型,不知道。 谢谢!