Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
135 views
in Technique[技术] by (71.8m points)

javascript - How does DevTools determine an object's constructor's name?

I'm using Chrome v22.0.1229.94 m, not that it should matter, but just in case :-)

Portability is of no concern to me. As long as it works with Chrome (and Safari) I'm happy.

I have two functions, foo and bar:

var foo = function() {
  ...
}
function bar() {
  ...
}

then if I create objects using them:

f1 = new foo();
b1 = new bar();

I can get the constructor's name for bar, but nor for foo:

> f1.constructor.name  ==> ""
> b1.constructor.name  ==> "bar"

yet in both cases DevTools console will show the names "foo" and "bar" when I inspect the variables f1 and b1.

How do I extract the name foo for f1 as DevTools is able to?

enter image description here

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

V8 can perform function name inference at the parsing stage, exposing this information via its APIs. You will not be able to extract this info using the normal object properties.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...