如何从该函数内部访问函数名?
// 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) 我在Nodejs v0.11.2中使用了生成器,我想知道如何检查我的函数的参数是生成器函数.
我找到了这种方式,typeof f === 'function' && Object.getPrototypeOf(f) !== Object.getPrototypeOf(Function)但我不确定这是否好(并在将来工作)方式.
你对这个问题有什么看法?
我正在做什么:
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)
但是,这张地图是私人的,无法轻易访问(据我所知).
有没有更好的解决方案然后以某种方式滚动我自己的类来访问这个工厂列表?
我看过很多关于人们试图创建动态组件的消息.但是,这些通常是在运行时创建组件.这里讨论的组件已经预先定义,我试图使用字符串作为键来访问工厂.
任何建议或建议都非常感谢.
非常感谢你.
根据文档,UglifyJS可以破坏所有属性名称,除了提供的保留列表上的属性名称.是否可以通过其他方式执行此操作,因此只提供列表中的属性?
如果是这样,我需要传递给哪些选项uglify.minify(files, { ... })?
我看到了两种获得它的方法.首先是在这个类中写一个getter
getClassName(){return "Process"}
Run Code Online (Sandbox Code Playgroud)
但我想如果我尝试在不属于这个类的对象中调用此方法并且没有这样的方法,那将是一个错误.
第二个是使用object instanceof Process.但也许有一些方法可以让它变得更好,更正确?
所以我一直面临这个奇怪的问题,但我不确定这是一个错误还是我在这里遗漏了一些东西。
所以我有一个名为的组件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 ×5
ecmascript-6 ×3
angular ×2
class ×1
dynamic ×1
function ×1
generator ×1
node.js ×1
typescript ×1
uglifyjs ×1
uglifyjs2 ×1
yield ×1