相关疑难解决方法(0)

如何从该函数中获取函数名?

如何从该函数内部访问函数名?

// parasitic inheritance
var ns.parent.child = function() {
  var parent = new ns.parent();
  parent.newFunc = function() {

  }
  return parent;
}

var ns.parent = function() {
  // at this point, i want to know who the child is that called the parent
  // ie
}

var obj = new ns.parent.child();
Run Code Online (Sandbox Code Playgroud)

javascript function

242
推荐指数
12
解决办法
21万
查看次数

检查功能是否是发电机

我在Nodejs v0.11.2中使用了生成器,我想知道如何检查我的函数的参数是生成器函数.

我找到了这种方式,typeof f === 'function' && Object.getPrototypeOf(f) !== Object.getPrototypeOf(Function)但我不确定这是否好(并在将来工作)方式.

你对这个问题有什么看法?

javascript yield generator ecmascript-6

54
推荐指数
7
解决办法
1万
查看次数

如何使用ResolveComponentFactory()但使用字符串作为键

我正在做什么:

  • 使用类似于"resolveComponentFactory()"的东西,但使用'string'标识符来获取组件工厂.
  • 获得后,开始利用"createComponent(Factory)"方法.

Plnkr示例 - > 在此处输入链接描述

在该示例中,您将看到"AddItem"方法

addItem(componentName:string):void{
    let compFactory: ComponentFactory;
    switch(componentName){
        case "image":
            compFactory = this.compFactoryResolver.resolveComponentFactory(PictureBoxWidget);
            break;
        case "text":
            compFactory = this.compFactoryResolver.resolveComponentFactory(TextBoxWidget);
            break;
}

//How can I resolve a component based on string
//so I don't need to hard cost list of possible options


this.container.createComponent(compFactory);
Run Code Online (Sandbox Code Playgroud)

}

"compFactoryResolver:ComponentFactoryResolver"在构造函数中注入.

正如您将注意到的,必须对switch语句中的每个排列进行硬编码都不太理想.

将ComponentFactoryResolver记录到控制台时,我发现它包含一个包含各种工厂的Map.

CodegenComponentFactoryResolver {_parent: AppModuleInjector, _factories: Map}
Run Code Online (Sandbox Code Playgroud)

但是,这张地图是私人的,无法轻易访问(据我所知).

有没有更好的解决方案然后以某种方式滚动我自己的类来访问这个工厂列表?

我看过很多关于人们试图创建动态组件的消息.但是,这些通常是在运行时创建组件.这里讨论的组件已经预先定义,我试图使用字符串作为键来访问工厂.

任何建议或建议都非常感谢.

非常感谢你.

dynamic typescript angular2-components angular

12
推荐指数
1
解决办法
8511
查看次数

UglifyJS财产损失

根据文档,UglifyJS可以破坏所有属性名称,除了提供的保留列表上的属性名称.是否可以通过其他方式执行此操作,因此只提供列表中的属性?

如果是这样,我需要传递给哪些选项uglify.minify(files, { ... })

javascript node.js uglifyjs uglifyjs2

8
推荐指数
1
解决办法
2179
查看次数

获取对象的构造函数名称

我怎样才能获得对象类的名称?我的意思是这个例子中的"过程"在此输入图像描述

我看到了两种获得它的方法.首先是在这个类中写一个getter

 getClassName(){return "Process"}
Run Code Online (Sandbox Code Playgroud)

但我想如果我尝试在不属于这个类的对象中调用此方法并且没有这样的方法,那将是一个错误.

第二个是使用object instanceof Process.但也许有一些方法可以让它变得更好,更正确?

javascript class ecmascript-6

5
推荐指数
2
解决办法
4157
查看次数

Angular4:Component.name 不适用于生产

所以我一直面临这个奇怪的问题,但我不确定这是一个错误还是我在这里遗漏了一些东西。
所以我有一个名为的组件TestComponent,在 AppComponent 中我有一个按钮,当我点击它时,我TestComponent通过这样做获得了名称TestComponent.name

应用组件

import { TestComponent } from './test/test.component';
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  template: '<button (click)="showName()">Show</button>'
})
export class AppComponent {    
  showName(){
    console.log('component name: "' + TestComponent.name + '"');
  }
}
Run Code Online (Sandbox Code Playgroud)

正如您通过单击按钮所看到的,我想获取 TestComponent 的名称,它基本上是“TestComponent”
问题是这在开发模式下运行良好,如果我调用ng build也可以正常工作,这就是我在控制台中得到的:

在此处输入图片说明

当我调用ng build --prod, 压缩文件并减小它们的大小时,我得到以下结果:

在此处输入图片说明

这正常吗?!

javascript ecmascript-6 angular

4
推荐指数
1
解决办法
3368
查看次数