如何使构造函数名称显示为“对象”?

时间:2016-05-23 08:01:04

标签: javascript constructor

function F1 () { return {}; }
function F2 () { }

[F1(), new F2()]; // [Object, F2]

我需要F1的行为类似于没有新命令的F2 - [F1,F2]。

4 个答案:

答案 0 :(得分:3)

在调用F1时你是返回对象 webView.setWebViewClient(new WebViewClient() { @SuppressWarnings("deprecation") @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // TODO Auto-generated method stub super.onReceivedError(view, errorCode, description, failingUrl); webView .loadData( "<div>Please check your internet connection.</div>", "text/html", "UTF-8"); } @TargetApi(android.os.Build.VERSION_CODES.M) @Override public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) { // Redirect to deprecated method, so you can use it in all SDK versions onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString()); } }); ,这是真的!!! ..但如果你想要{}

I need to the behavior of F1 was similar to F2.

答案 1 :(得分:1)

javascript中的

构造函数只是对象,可以使用new关键字初始化。因此,F1()只是一个函数调用,而new F2()是一种创建新对象的方法。

你可以看到:

function F1 () { return {}; } // <----not a constructor method
function F2 () { } // <---------------This can be a constructor method  

F1()不是这里的构造函数方法,因为它有一个返回值作为对象。您不能拥有具有返回值的构造函数。

虽然F2()没有返回值,因此可以用作构造函数。

答案 2 :(得分:0)

覆盖toString方法。

MDN docs

答案 3 :(得分:-1)

这是一个浏览器&amp;控制台版本描述可靠。
这就是你可以从IE10控制台上获得的相同代码:

function F1 () { return {}; }; 
function F2 () { };

[F1(), new F2()]; 

>> [object Object],[object Object] {
    0 : [object Object],
    1 : [object Object]
}