// 获取一个类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之类的语句。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 前端echarts坐标轴问题
- ¥15 CMFCPropertyPage
- ¥15 ad5933的I2C
- ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
- ¥15 数学建模求思路及代码
- ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
- ¥15 谁会P4语言啊,我想请教一下
- ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
- ¥50 求解vmware的网络模式问题 别拿AI回答
- ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳