您的位置:首页 > 其它

var f = new fn();如果function的返回值是对象的话则返回该对象,否则返回function的实例。

2009-07-25 02:23 363 查看
var f = new fn();如果function的返回值是对象的话则返回该对象,否则返回function的实例。








看下边的例子

js 代码

function
fn()



{



this
.k = 1;



return
1;


}


fn.prototype = {


j: 0


};


var
f =
new
fn();
// f = {}



结果出乎意料,竟然是fn的实例({k:1, j:0});为什么又是function的实例了?继续看下面的实验,在fn中分别return各种数据类型的值,得出一下结果

js 代码

return
1; f = {
"j"
:0,
"k"
:1}



return

false
; f = {
"j"
:0,
"k"
:1}


return

true
; f = {
"j"
:0,
"k"
:1}


return

"string"
; f = {
"j"
:0,
"k"
:1}


return

null
; f = {
"j"
:0,
"k"
:1}


return
undefined; f = {
"j"
:0,
"k"
:1}








return

new
Number(1); f = 值为1的Number对象


return

new
String(
"string"
); f = 值为
"string"
的String对象


return

new
Boolean(
true
); f = {}


return
[1]; f = [1]


return

new
Object(); f = {}


注:Boolean在IE和FIREFOX似乎只要声明而没有定义,不管传入的是true还是false,返回的都是{},而且没有ToString()等方法。而且它的prototype也是{} 。其他浏览器没试过,还不清楚。不过估计也是一样的吧。

[修正]Boolean是有定义的,ToString()应该是toString();

实验的结论很明显,如果function的返回值是对象的话则返回该对象,否则返回function的实例

javascript真是一门神奇的语言,容易入门,但是其中的细节和一些技巧却不是一时半会能掌握,每次回过头学都能学到一些新的东西,好像怎么都学不完,继续加油。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐