Articles of 构造函数

如何将Getter / Setter应用到对象

在定义它的时候,如何将一个getter / setter应用到一个对象本身? 例如,我想做 myobj = 123运行console.log(123) 我知道这是可能的,通过使用class extends ,但我想find一个更简单的方式, 可能在构造函数中定义getter / setter。 有谁知道如何? 这甚至有可能吗? 如果您需要更多信息,或者我不够清楚,请告诉我。 – JacobTDC

如何覆盖函数的构造函数属性

我是JavaScript编程新手,我甚至不知道如何去问Google,所以我会详细描述我想实现的目标。 我使用node.js和xml2js模块为茉莉花创buildDataProvider类,parsing简单的XML文件: <Tests> <Test name="test1"> <values>2,4,6</values> <expectations>1,2,3</expectations> </Test> <Test name="test2"> <values>8,10,12</values> <expectations>4,5,6</expectations> </Test> </Tests> 我想要DataProvider构造函数立即parsingXML,并在this.testData显示结果。 脚本是: var fs = require('fs'), xml2js = require('xml2js'), util = require('util'); var DataProvider = function(dataPath) { this.dataPath = dataPath; this.testData; fs.readFile(this.dataPath, function(err, data) { var parser = new xml2js.Parser(); parser.parseString(data, function(err, result) { //console.log(util.inspect(result, false, null)); this.testData = result; }); […]

节点通过构造器创build实例

在尝试使用nodejs时,遇到了通过构造函数创buildisntances的问题。 我创build简单的购物车function。 我有文件cart.js var items = []; function addItem (name, price) { items.push({ name: name, price: price }); } exports.total = function () { return items.reduce(function (a,b) { return a + b.price; }, 0); }; exports.addItem = addItem; 我用节点运行它 var cart = require('./cart') 但是,如果我需要创build一个Cart的多个实例呢? 我试图重构我的代码,创build一个构造函数,它包含items[] addItem() and total()函数,如下所示: exports.Cart = function () { var items […]

JavaScript常见的方法来多个现有的构造函数

我对Javascript处理构造函数,方法和原型的方式颇为陌生。 我想创build两个具有许多不同的自定义方法的构造函数,但也有一些共同的方法。 目前我做这样的事情: function PlayerWhite(n,s) { this.name = n; this.state = s;} function PlayerBlack(n,c) { this.name = n; this.county = c; } PlayerWhite.prototype.showCounty = function() { alert(this.county);} PlayerBlack.prototype.showState = function() { alert(this.state);} PlayerWhite.prototype.showName = function() { alert(this.name); } PlayerBlack.prototype.showName = function() { alert(this.name); } 所以这两个构造函数的“showName”方法的内容是相同的。 “showName”的代码可能会改变,这两个都是一样的,所以我不想在每次执行showName方法的更新时进行双重编辑。 当然,我只能使用1个构造函数(function Player),调用它两次来构build这两个对象,然后将通用方法分配给每个对象,然后使用原型将不同的方法应用于每个对象,但是如果我已经写了数百行的代码,我有很多从PlayerBlack和PlayerWhite构造函数创build的对象,我只是想添加一个新的方法,可以通过PlayerBlack或PlayerWhite创build的所有现有的对象之间使用? 我尝试了这样的东西,但它不工作: PlayerWhite.prototype.showName, PlayerBlack.prototype.showName = function() { alert(this.name); […]

“这个”在构造之后丢失了? (TS /节点/expression)

我正在尝试使用node-express构build一个简单的http应用程序。 设置路由时出现问题, MyRouter类的构造函数有this但是它在getRoutes()函数中丢失了。 class Main { public async run(): Promise<void> { const myRouter = new MyRouter(this.config); // this.server is express() during construct this.server.use("/v1", myRouter.getRoutes); await this.server.listen(this.config.rest.port); } } class MyRouter { private router: express.Router; constructor(private config: any) { this.router = express.Router(); console.log(this); // Prints the whole Router object! } public getRoutes(): express.Router { console.log(this); // […]

“不是构造函数”,但types检查

是的,这已被要求死亡,但这些 都没有为我工作。 我得到一个TypeError: Config is not a constructor当调用Config构造TypeError: Config is not a constructor时, Config TypeError: Config is not a constructor函数。 通过其他SO问题和MDN ,看来这个错误的常见原因是阴影构造函数或调用一个不可调用的types,但这两个都没有在我的项目中检查。 这是电话: var Server = require("./server.js").Server; var Config = require("./config.js").Config; new Server(new Config("app/config.json")).run(); 在./config.js : var fs = require("fs"); exports.Config = file => { var json; if (fs.existsSync(file) && !fs.lstatSync(file).isDirectory()) { json = JSON.parse(fs.readFileSync(file)); […]

V8 JavaScript:为什么C ++构造函数过滤代理?

看来,V8的C + +代码(testing人员)不把代理作为一个对象,从而返回默认的目标。 纯JavaScript(其他)中的相同场景按预期工作。 C ++中实现的pass through函数 static void tester(const FunctionCallbackInfo<Value>& info) { if (info.Length() > 0) { info.GetReturnValue().Set(info[0]); } } 安装代码(从应用程序周围收集) Local<String> testerString = String::NewFromUtf8(isolate, "tester", NewStringType::kNormal).ToLocalChecked(); Local<ObjectTemplate> globalTemplate = ObjectTemplate::New(isolate); globalTemplate->Set(testerString, FunctionTemplate::New(isolate, tester), DontEnum); Local<Context> context = Context::New(isolate, nullptr, globalTemplate, Local<Value>()); JavaScripttesting,与C ++和JavaScript交互,对象和代理,函数和构造函数。 function other(x) { return x; } { let a = […]

这两个构造函数模式有什么区别?

Function ConstrA () { EventEmitter.call(this); } util.inherits(ConstrA, EventEmitter); VS Function ConstrA() {} util.inherits(ConstrA, EventEmitter); EventEmitter.call(这个)有什么需要的吗?

在ES6 + babel中用蓝鸟Promisify导入类(构造函数)

假设我创build了或有一个node.js库lib.js export class C { constructor(value, callback) { callback(false, `Hello ${value}`); } task(value, callback) { callback(false, "returned " + value); } } 重要的部分是类的构造函数需要接受一个callback,因为它做的是数据库连接和文件I / O。 如果我现在导入并使用库callback样式,则一切正常(请参阅下面的c1 )。 我真的很想在图书馆中使用它来使对象构造更加方便(实际上它是一大堆类和方法)。 但是,我无法在保证安全的前提下正确地findnew的课程。 import Promise from 'bluebird'; import * as lib from './lib'; Promise.promisifyAll(lib); // old style — works as expected const c1 = new lib.C("c1", (e, v) => […]

ES6类中的constr.apply(this,args)

我已经使用下面的函数来创build一些未知类的实例: Kernel.prototype._construct = function (constr, args) { function F() { constr.apply(this, args); // EXCEPTION! } F.prototype = constr.prototype; return new F(); }; 如果我使用原型,一切正常: function Person(name, surname) { this.name = name; this.surname = surname; } var person = Kernel._construct(Person, ["name", "surname"]); // WORKS! 但是,有些人正在使用节点v4 +中使用ES6本机类的库: class Person { constructor(name, surname) { this.name = name; this.surname = […]