大家帮俺看看这段代码啊!
为什么提示 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>
为什么提示 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>
{
return this.str;
}
改为this.getString=function()
{
return this.str;
}
{
return this.str;
}
但是function内直接 再function是不可以的
while(str.charAt(i) == ' '){--i};
规范的写法应该这么写
while(str.charAt(i) == ' ')
{
--i;
}
while(str.charAt(i) == ' '){--i};
这么写可以执行,但是不规范
代表该对象有个getString方法function getString()
与对象没啥关系,可以理解为一个内部函数
<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>
答:这应该属于JavaScript的作用域的问题,JavaScript起作用的范围是其声明的地方而不是其执行的地方(引自相关资料,但具体不记得了),查查相关资料(推荐ECMA-262)。
2.function 与 () 之间有空格都可以,还有 while(str.charAt(i) == ' '){--i}; 这句又怎么理解呢?分号不在大括号内的--i后面也可以的?
答:JavaScript会在句末自动加上分号(这一点IE做的非常好,就是纠错功能,但是对于程序员来说并不是件好事)。