大家帮俺看看这段代码啊!
为什么提示 objTest.getString() 没有这个方法啊,说对象不支持此属性或方法,但是写成 this.getString = function () 这个样子却行呢?function 与 () 之间有空格都可以,还有 while(str.charAt(i) == ' '){--i}; 这句又怎么理解呢?分号不在大括号内的--i后面也可以的?代码如下
<html>
<head>
<meta http-equiv="content-type" content="text/html;charser=gb2312" />
<title>javascript测试</title><script language="javascript">
<!--
function Mystring(str)
{
this.str = str;
function getString()
{
return this.str;
}
//截取串头部的空格
function ltrim(str)
{
var i = 0;
while(str.charAt(i) == ' '){++i;}
return str.substring(i,str.length);
}
//截取串尾部的空格
function rtrim(str)
{
var i = str.length - 1;
while(str.charAt(i) == ' '){--i};
return str.substring(0,i+1);
}
//截取头尾部的空格
function trim(str)
{
return ltrim(rtrim(str));
}
//调用成员函数
this.str = trim(this.str);
}
var objTest = new Mystring('   测试javascript的类!      ');
var strTest = '|' + objTest.getString() + '|';
debugger;
-->
</script></head>
<body onload="javascript:alert(strTest);">
javascript测试
</body>
</html>

解决方案 »

  1.   

    将function getString()
            {
                return this.str;
            }
    改为this.getString=function()
            {
                return this.str;
            }
      

  2.   

    改成这样试试        this.getString=function()
            {
                return this.str;
            }
      

  3.   

    this.getString = function () 是赋值操作,虽然也定义了个function,是允许的
    但是function内直接 再function是不可以的
     while(str.charAt(i) == ' '){--i};
    规范的写法应该这么写
     while(str.charAt(i) == ' ')
    {
     --i;
    }
    while(str.charAt(i) == ' '){--i};
    这么写可以执行,但是不规范
      

  4.   

    this.getString
    代表该对象有个getString方法function getString()
    与对象没啥关系,可以理解为一个内部函数
      

  5.   

    里面的方法不也是 function 内直接再function,为什么可以呢?
      

  6.   

     function getString()这么写的话就是内置的方法了,应该是this.getString(),这样写可以运行,但还不够合理,应该这么写Mystring.prototype.getString(){.......};这样所有的对象就共用一个函数了!
      

  7.   

    function rtrim(str)方法不也是内置,却可以运行哦?实例不能调用内置方法吗?
      

  8.   

    <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charser=gb2312" />
    <title>javascript测试</title><script language="javascript">
    <!--
        function Mystring(str)
        {
            this.str = str;
            //截取串头部的空格
            function ltrim(str)
            {
                var i = 0;
                while(str.charAt(i) == ' '){++i;}
                return str.substring(i,str.length);
            }
            //截取串尾部的空格
            function rtrim(str)
            {
                var i = str.length - 1;
                while(str.charAt(i) == ' '){--i};
                return str.substring(0,i+1);
            }
            //截取头尾部的空格
            function trim(str)
            {
                return ltrim(rtrim(str));
            }
            //调用成员函数
            this.str = trim(this.str);
        }
    Mystring.prototype.getString=function(){
    return this.str;

        var objTest = new Mystring('   测试javascript的类!      ');
        var strTest = '|' + objTest.getString() + '|';
        debugger;
    -->
    </script></head>
    <body onload="javascript:alert(strTest);">
    javascript测试
    </body>
    </html>
      

  9.   

    1.为什么提示 objTest.getString() 没有这个方法啊,说对象不支持此属性或方法,但是写成 this.getString = function () 这个样子却行呢?
    答:这应该属于JavaScript的作用域的问题,JavaScript起作用的范围是其声明的地方而不是其执行的地方(引自相关资料,但具体不记得了),查查相关资料(推荐ECMA-262)。
    2.function 与 () 之间有空格都可以,还有 while(str.charAt(i) == ' '){--i}; 这句又怎么理解呢?分号不在大括号内的--i后面也可以的?
    答:JavaScript会在句末自动加上分号(这一点IE做的非常好,就是纠错功能,但是对于程序员来说并不是件好事)。