zhuzhijia1985 2010-05-20 09:47
浏览 204
已采纳

麻烦各位大虾,帮我看看这个代码,为什么红色部分不能调用?

// 获取一个类typeof的方法 function getType(x) { if(x == null) return "null"; var t = typeof x; if (t != "object") {return t;} var c = Object.prototype.toString.apply(x); //[object Class] c = c.substring(8, c.length-1); // [Class] if (c != "Object") return c; if(x.constructor == Object) return c; if ("classname" in x.constructor.prototype && typeof x.constructor.prototype.classname == "string" ) return x.constructor.prototype.classname; } //从一个类中复制方法到另一个类中 function borrowMethods(borrowForm,addTo) { var from = borrowForm.prototype; var to = addTo.prototype; for (m in from) { if(typeof from[m] != "function") continue; to[m] = from[m] } } //test的构造函数 function test(name) { this.name = name; } //为test原型添加方法,一种是直接调用getType()方法,一种是把getType()方法直接复制到test中 test.prototype.gettype= function() { [color=red]//getType.call(this,(new test())); getType.call((new test()),(new test())); borrowMethods(getType,test);[/color] } alert((new test()).gettype); //去掉"()"这种写法只是表示取对象的值,而不是调用方法,因为方法本身也就是一种属性。
  • 写回答

2条回答 默认 最新

  • myali88 2010-05-20 10:01
    关注

    [code="javascript"]
    alert((new test()).gettype);
    [/code]
    这个只是对该方法的一个引用,自然打印出来的就是gettype函数本身的内容了。如果改成[code="java"script]alert((new test()).gettype());[/code]这样才会发起函数调用,自然才能知道红色部分是否执行了,返回值是“undefined”是正确的,因为函数没有明确的返回值。
    如果你要知道红色部分是否调用了,在getType里面设置断点就可以看到,或者里面加个什么alert之类的语句。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳