js之toString方法

1 js中也有toString方法。该方法是从Object基类继承下来的。当alert或document.write方法时,参数为类对象的参数。这时会自动调用类对象的转化为字符串的toString方法。如果没有重写则往上查找直至找到。可以通过prototype类添加。
如:function classA(){
this.name="";
this.value="";
this.getName=function(){
return this.name;
}
this.getValue=function(){
return this.value;
}
this.setName=function(name_){
this.name=name_;
}


this.setValue=function(value_){
this.value=value_;
}
}


//通过prototype来重写toString方法
classA.prototype.toString=function(){
return "<div>"+this.getName()+"--"+this.getValue()+"</div>";
}




jsp:
<input type="button" name="test" value="测试js的toString()" οnclick="btn_test_click()"/>


js:
function btn_test_click(){
var classA1=new classA();
classA1.setName("xcl");
classA1.setValue("111");
alert(classA1);//会调用该类对象的toString方法。
}


也可以用document.write方法来调用。
如:
function btn_test_click(){
var classA1=new classA();
classA1.setName("xcl");
classA1.setValue("111");
document.write(classA1);//会调用该类对象的toString方法
}


!!!!记住:js中如果想要类对象转化为字符串方法。就可以重写该类对象中的toString方法。通过prototype。这样就可以当使用alert或者document.write方法时,参数为类对象。目的是将类对象转化为字符串时,会自动调用类对象的toString方法。


!!!!!总结:
1 js中和java中的toString方法都是将该类对象转化为字符串的函数。如果想要将该类对象转化为字符串则可以重写该toString方法。
2 在调用的方法的参数为类对象时会自动调用该类对象的toString方法,如js中的alert方法、document.write方法。java中的System.out.println方法、String.valueOf方法。
3 当然了也可以直接调用该类对象的toString方法来直接得到字符串。


完整的例子:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

<link rel="stylesheet" type="text/css" href="<%=basePath %>css/dtree.css"/>
<script type="text/javascript" language="javascript" src="<%=basePath %>js/dtree.js"></script>
  </head>
  
  <body>
  aaaaa
  <input type="button" name="test" value="测试js的toString()" οnclick="btn_test_click()"/>
  </body>
<script type="text/javascript">
d12=new dTree('d12');
d12.add(0,-1,"0");
d12.add(10,0,"10");
d12.add(11,10,"11","qq");
d12.add(12,10,"12","ddd");
d12.add(20,0,"20");
document.write(d12);



function btn_test_click(){
var classA1=new classA();
classA1.setName("xcl");
classA1.setValue("111");
alert(classA1);
//document.write(classA1);
}


function classA(){
this.name="";
this.value="";
this.getName=function(){
return this.name;
}
this.getValue=function(){
return this.value;
}
this.setName=function(name_){
this.name=name_;
}


this.setValue=function(value_){
this.value=value_;
}
}


classA.prototype.toString=function(){
return "<div>"+this.getName()+"--"+this.getValue()+"</div>";
}


//btn_test_click();
</script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值