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

解决方案 »

  1.   

    String.prototype.type='Date';
    alert('2013-10-10'.type)
      

  2.   

    //有没有办法给 String 定义一个类似length 的属性,可以这样访问:'2013-10-10'.length  // 10re:
    这个有呀
    alert('2013-10-10'.length);
      

  3.   

    感谢3位的回复#1 您的理解是正确的,是需要定义一个属性:
    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
    ... 
      

  4.   

    那你用这个语法。(ie目前不支持)<script type="text/javascript">
    var aa = {
    set vof(v){
    alert(v);
    }, get vof(){
    alert("asd");
    }
    };
    aa.vof = 3555;
    aa.vof;
    </script>
      

  5.   

    String.prototype.__defineGetter__('type', function() {
    return /^\d+$/.test(this)?'Number':
    (/^\d{4}(-\d{1,2}){2}/.test(this)?'Date':'String'  )
    });    
      

  6.   

    --------------------------------------------感谢您的回复,是这个意思,就是 
    var s='sfskjflsajfkls'; // 随机获得字符串
    alert(s.type) // Lowercase   (注意,type 后面无括号) 但是 IE 10 下报错SCRIPT438: Object doesn't support property or method '__defineGetter__' 
      

  7.   

    跟着大神走,临摹一个<script type="text/javascript">
    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>
      

  8.   

    IE10 下已实现,但遗憾的是低版本的IE异常。
      

  9.   

    #6、#9 的朋友部分实现了,但存在一定兼容性问题。
    看来直接从 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 
    如果有更好的方法还希望您分享,结帖散分。感谢朋友们的参与!