在函数中引用函数的属性?

时间:2016-10-21 05:04:36

标签: javascript function oop object properties

关于JavaScript的许多有趣的事情之一是函数实际上是对象,它们可以通过多种方式构造,其中一种方法直接使用它的构造函数:

var func = new Function( "arg1" , "arg2" , "arg3" , "function_body" );

考虑到它是一个javascript对象,我假设我可以将一个属性附加到该对象:

func.propertyA = "whatever I want this to be";

考虑到这一点,我将如何引用函数中的属性?

为清晰起见(this doesn't work):

var func = new Function( "arg1" , "arg2" , "arg3" , "alert( func.propertyA );" );
func.propertyA = "hello world";
func();

这应该警告“你好世界。”

在JSFiddle中运行此脚本时,您在控制台中收到错误,而是说"func" is undefined

1 个答案:

答案 0 :(得分:0)

我真的不建议这样做,但有办法。

当您在function object上设置值时,可以正确绑定this。在处理函数时,与方法相反,分配this的最简单方法是使用<function>.bindfunction.call/function.apply

&#13;
&#13;
// Not all JavaScript engines support multiple arguments to new Function

var func1 = new Function( "console.log(this.prop1)" );
func1.prop1 = "Test prop";

func1();

// Bind `this` properly
func2 = func1.bind(func1);
func2();

// Or use apply
func1.apply(func1);
&#13;
&#13;
&#13;