Ajax 板


LINE

尝试这样做,让NewType与String相容: <html> <body> <script> function NewType(str) { this._str = str; this.toString = function() { return this.valueOf(); } this.valueOf = function() { if(this._str && typeof(this._str)==="string") { return this._str||""; } else { throw("Type Error."); } } } NewType.prototype = new String; NewType.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); }; var b = new NewType("a new day is coming "); alert(b); alert(b+"|"); alert(b.indexOf("co")); alert(b.trim()+ "|"); alert(b.toUpperCase()); </script> </body> </html> 看起来需要做几件事: 1. constructor (也就是NewType这个function)需要模仿String来传入参数 2. 必须用自己的方法实作toString以及valueOf方法 alert(b)会用到toString alert(b+"|")会用到valueOf String的native方法以及你用prototype挂上去的方法,好像都会呼叫toString。 我没仔细看ECMA-262,不过这样是可以跑的。 -- Sapere Aude! 这就是启蒙运动的口号! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.166.83
1F:推 legnaleurc:嗯...的确是可以动了,不过如果使用 03/16 14:03
2F:→ legnaleurc:new String( ... )或是null来初始化NewType 03/16 14:04
3F:→ legnaleurc:行为就会和String不一样QQ 03/16 14:04
4F:→ legnaleurc:第二种状况我是直接丢 exception 03/16 14:05
5F:→ legnaleurc:但是第一种似乎不能用typeof来看 03/16 14:06
6F:→ fillano:如果不用new NewType("xxx")的方式来初始化,那干麽要继承 03/16 15:23
7F:→ fillano:?用composite就好了阿? 03/16 15:24
8F:→ fillano:嗯嗯,看了一下ecma-262,看起来关键是实作valueOf跟 03/16 22:28
9F:→ fillano:toString,这样继承的函数就可以执行,constructor传进来 03/16 22:29
10F:→ fillano:的参数,只要合理地处理,让valueOf跟toString可以正确执 03/16 22:30
11F:→ fillano:行应该就可以跑了。String物件的这些方法,动作的第一步都 03/16 22:31
12F:→ fillano:是呼叫ToString,而使用"+"来做字串运算时,会呼叫valueOf 03/16 22:32
13F:→ fillano:,所以只要这两个正确运作就可以呼叫从String继承来的方法 03/16 22:33
14F:推 legnaleurc:喔喔,也就是说因为没有处理自己的toString 03/16 23:03
15F:→ legnaleurc:才会失败 谢谢指教!:P 03/16 23:03
16F:推 gpmm:推一下费大,这篇实在有 m 的价值! 03/18 22:06







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP