这一特性显然有助于你偷懒,当然也有利于实现一些特定的功能。为了说明这一特性,下面从一个实际开发案例说起。
如果在你的WEB项目中,有很多地方都需要输出像下面这样的一个列表HTML:
复制代码 代码如下:
<ul>
<li>JavaScript事件冒泡应用实例</li>
<li>执行AJAX返回HTML片段中的JavaScript脚本</li>
</ul>
很显然这是一个LI结构,也许你会想每次要输出这样结构的HTML,难道自己都要去拼这些LI标签吗?我能不能每次调用一个方法仅输入LI中间的文本内容,最终简单地得到一个完整的UL HTML结构呢。当然可以,程序的实现有N种方法,看看下面这种方法,这种方法显然简单而且科学:
复制代码 代码如下:
function ulBuilder()
{
var lis = '';
this.addLi = function(liText)
{
lis += '<li>' + liText + '</li>';
};
this.toString = function()
{
return '<ul>' + lis + '</ul>';
};
}
var ulHtml = new ulBuilder();
ulHtml.addLi('JavaScript事件冒泡应用实例');
ulHtml.addLi('执行AJAX返回HTML片段中的JavaScript脚本');
alert(ulHtml);
在上面的代码中,我们定义了一个类叫ulBuilder,它有两个公开方法addLi、toString,addLi方法是添加一个包含内容的LI标签,而toString方法是生成最终需要的UL HTML。在这个类的实际使用过程中,你根本没有看到toString方法的调用,但是alert(ulHtml)却显示了完整的UL结构的HTML。
实际上alert()的时候,脚本解析器会自动检查alert变量或对象的toString方法并调用它。在上面的例子中,是我们重写了toString方法,而恰好这个方法会由程序自动调用执行。
话题扩展:
1、在一些面向对象的开发语言中,比如C#、JAVA都有构造函数,这个构造函数显然作为类的一个成员方法,要想执行里面的代码,并不需要我们手动去调用这个方法,这个方法内部定义的代码会在类实例化的时候自动执行。当然,为了让系统能自动执行一些特定的方法,往往程序架构会对这些方法的命名规则有规定,比如构造方法的名称要与类名相同。像上面的例子中,如果把this.toString改成this.toUL,那么要想得到正确的结果只能像这样调用了alert(ulHtml. toUL())。
2、由于toString方法可以被重写,有时候显的特别有用。看看下面的例子,试一下没有重写与重写后输出的结果有什么不同。这个例子显然很不健壮,比如对数组嵌套的情况没有作处理,而且实际意义也不大,只为让你知道可以这样做。
复制代码 代码如下:
Array.prototype.toString = function()
{
return '[\'' + this.join('\',\'') + '\']';
};
var companys = ['Adobe','Apple','Google','Intel','Microsoft','Oracle','IBM','SUN'];
alert(companys);
下面再举一个例子,这个例子比上面例子实用些。正常情况下你alert(JSON)的时候,并不能看到JSON的真正结构,只弹出[object Object],试试下面的实现,也许这是你想要的结果。当然这个方法也是很不完善的,真要使用这样的功能,请到JSON官方站点去下载相关JS库吧:
复制代码 代码如下:
var userInfo =
{
"name": "Mike",
"age": 23,
"phone": "020-87654321",
"toString": function()
{
var objStr = '';
for (var key in this)
{
if (typeof(this[key]) == 'string')
objStr += '"' + key + '":"' + this[key] + '",';
}
return '{' + objStr.replace(/,$/, '') + '}';
}
}
alert(userInfo);
作者:WebFlash
相关推荐:
ChatGPT遇到问题?如何解决“您的应用遇到问题,无法正常启动”困境?,ai下载增强版
SEO而且:打造高效网站流量增长的秘密武器,滨江网站推广营销
ChatGPT目前,我无法查看或打开附件,但我依然能为你提供全面的帮助,苹果ai谷歌ai
《收录情况:数字时代的网络信息检索与价值体现》,山东全域营销推广软件客服电话
seo种草什么意思,seo yoo na ,三维地震反演AI
如何用AI写公众号文章?让创作更高效、更轻松
SEO关键词的选择步骤:让你的网站在搜索引擎中脱颖而出,ai书法化
SEO快速优化技术:助力网站流量暴增,轻松登顶搜索引擎,铜陵ai全网通推广软件
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
SEO深度解析:如何通过深度优化提升网站排名,带来流量和转化,咸宁网站建设大概费用
“标题制造机”:颠覆内容创作的秘密武器,助你轻松打造吸引力十足的标题,景区线上推广用哪些网站
Chatttst:开启智能沟通新时代的无限可能,上海联通ai
seo资源是什么意思,seo资源怎么打开 ,梅州ai自动插件加工
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!,ai颜色不对
SEO导航:助力网站提升流量与排名的必备工具,荣昌建筑网站建设
企业SEO:如何通过搜索引擎优化提升企业网络竞争力,安阳网站优化布局设计
SEO选择:如何挑选最合适的SEO优化策略?,wb免费刷粉网站推广
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
seo运营经理是什么,seo和运营的区别 ,皖妍ai宁慕晴o
SEO韩国:为您开启国际市场的增长之门,seo文章标题有哪些
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
SEO手段:提升网站流量的制胜法宝,idc网站怎么推广
ChatGPT:引领智能对话新潮流,助力未来科技,ai写作免费议论文
“扩写AI”-引领写作革命,开启智能创作新时代,dede seo 标题如何填写
seo独立站是什么,独立站推广是什么 ,ai曲线笔刷扩展
AI一键生成文章在线:提升创作效率,改变写作方式
ChatGPT,您的银行卡被拒绝了?别慌,这些方法帮您快速解决问题!,ai给那个标声调
什么是seo长尾词,什么是seo长尾词的概念 ,绿茶ai换脸杨超越
【SEO优化全攻略】提升网站流量的终极秘籍,带你轻松玩转搜索引擎优化!,金融网站推广维护
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
文章缩写AI:高效编辑的未来之光
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
SEO更好,让你的网站从此脱颖而出,渝中的知名网站建设
ChatGPT的超链接点不开?解决方法一网打尽!,情感ai写作指令是什么
SEO已经成为数字营销的核心,如何利用SEO提升网站流量和转化率,含山网站优化推广
AI提取文章重要内容:让信息抓取更高效、更精准,松鼠ai 教学
亚马逊seo是什么公司的,“亚马逊” ,ai玩底特律
seo网站需要做什么,seo都需要做什么 ,ai怎么做喷漆效果
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
AI人工智能:开发与应用的必备软件推荐
ChatGPT空白对话:释放创意,开启智能对话的新世界,ai重庆南坪
优化收费,助力企业提升效益,实现共赢,宜州餐饮网站建设
seo需要会什么,seo要会些什么 ,ai313414919
ChatGPT错误处理与异常情况解决方法:让你的AI助手更加智能与可靠,智能ai鼠标ai智能语音
SEO好吗?助力网站成功的关键之道,网站优化方案范文怎么写
SEO那么重要,企业如何通过它脱颖而出?,自媒体推广营销的概念
ChatGPT登录界面都不显示了?可能是这些原因导致的!,上海小学ai智能课
主流seo是什么,seo是什么推广网站 ,AI心理师
提升写作效率,释放创意潜力文章生成AI软件的未来
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变