String.prototype.type=function(){return 'Date';};alert('2013-10-10'.type()) // type后面加括号, 调用添加的方法可以得到结果
alert('2013-10-10'.type) // type后面无括号结果不正确//有没有办法给 String 定义一个类似length 的属性,可以这样访问:'2013-10-10'.length // 10
'2013-10-10'.type // Date 注意,type 后面无括号希望各位指点一下,如无法实现,说明一下原因也可谢谢!String prototype
alert('2013-10-10'.type) // type后面无括号结果不正确//有没有办法给 String 定义一个类似length 的属性,可以这样访问:'2013-10-10'.length // 10
'2013-10-10'.type // Date 注意,type 后面无括号希望各位指点一下,如无法实现,说明一下原因也可谢谢!String prototype
alert('2013-10-10'.type)
这个有呀
alert('2013-10-10'.length);
String.prototype.type='Date';
alert('2013-10-10'.type)
但这样不论什么字符串总是返回'Date'。关键一点,是想实现 一个字符串与生俱来就有 type 属性。
参考length属性,不需length() 执行获得结果,且根据字符串不同而不同:
alert('2013-10-10'.length) // 10
alert('AAA'.length) // 3
alert('aaa'.length) // 3
alert('99'.length) // 2想实现下面的效果。(注意,type 后面无括号)alert('2013-10-10'.type) // Date
alert('AAA'.type) // Uppercase
alert('aaa'.type) // Lowercase
alert('99'.type) // Number
...
var aa = {
set vof(v){
alert(v);
}, get vof(){
alert("asd");
}
};
aa.vof = 3555;
aa.vof;
</script>
return /^\d+$/.test(this)?'Number':
(/^\d{4}(-\d{1,2}){2}/.test(this)?'Date':'String' )
});
var s='sfskjflsajfkls'; // 随机获得字符串
alert(s.type) // Lowercase (注意,type 后面无括号) 但是 IE 10 下报错SCRIPT438: Object doesn't support property or method '__defineGetter__'
Object.defineProperty(String.prototype, "type", {
get: function() {
return /^\d+$/.test(this)?'Number':(/^\d{4}(-\d{1,2}){2}/.test(this)?'Date':'String');
}
});
alert('2012-12-04'.type);
</script>
看来直接从 String 原型开始定义的的思路目前难以实现。已变换一种思路,曲线实现:myString = function(s){
var str= new String(s); /* new 一个*/
str.type='String||Date||Number...'; /* Type*/
//str.x1 ...
//str.x2
//...
return str;
}
$s=myString('Asdfsdfs689');
alert($s.type)
缺点就是要绕个弯子,要将 任意字符串先 变成 myString
如果有更好的方法还希望您分享,结帖散分。感谢朋友们的参与!