我是js菜鸟,想请教:javascript中字符串覆盖问题 在线等待
发布时间:2025-05-25 07:09:44 发布人:远客网络
一、我是js菜鸟,想请教:javascript中字符串覆盖问题 在线等待
1、//首先你要明白一点,这段程序是从上至下开始执行的,如果直接用
2、"="给变量赋值的话,就是将一个值覆盖变量原来的值,如下
3、var a=1;//声明变量并赋值为1,此时a代表1
4、a=a+1;//重新赋值为(a+1),需要说明一点在将a+1赋予a之前,a=2,所
5、以a=a+1其实是a=2+1,即此时a的值为3
6、另外Js中给变量赋值还有+=、-=、++、--
二、JavaScript正则表达式中 : 是什么意思
“?:”是“非获取存储匹配”的意思
“?:”只在一个“()”group中,紧贴着“(”出现,例如“(?:abcdefg)”,不同于“?”,“?:”不是一个量词,但是与“()”共同构造一个元字符,这个元字符所匹配出来的结果,不会保留,也不能参与诸如替换计算等等的操作。(这个操作在服务端多见一些,前端用的不多)(javascript只有string对象的replace方法能用到这个功能)
简单来说,就是你的正则表达式如果用不着在javascript里面使用replace方法,“?:”就可以省去(当然,看个人喜好和排版习惯,还有调试中的页面响应速度,如果加了“?:”反而更快,那就用吧)。
这么说起来还是比较抽象,用实例代码来说明吧。
<p>将匹配的数字增加后缀“9”</p>
<p class="demo">/(\d+)/gi:A23G4HFD567.</p>
<p class="demo">/(?:\d+)/gi:A23G4HFD567.</p>
<button onclick="myFunction()">点我</button>
var e=document.getElementsByClassName("demo");
var n=str.replace(/(\d+)/gi,"$19");
var n=str.replace(/(?:\d+)/gi,"$19");
<!--在实例里面“$1代表第一个“()”所匹配的结果-->
可以看到“/(\d+)/gi”所匹配的结果被用于扩展替换字符串中的“$1”;
但是“/(?:\d+)/gi”所匹配的结果没有被用于扩展替换字符串中的“$1”,尽管,它也成功地找到了被查找字符串中的数字,显然结果没有被保留。
对了,类似的问题,可以用这种办法去对比验证。(比如“?=”、“?!”、“?<=”、“?<!”是什么意思……)
上图是在菜鸟教程找到的一个比较全面的正则表达式的元字符列表的部分:
还有,不同软件的正则表达式的可能有不同的特性,但是目前perl的正则表达式是公认最多特性的。
三、JavaScript如何创建对象
潜意识里,JavaScript不能算是面向对象的语言,要算也只能说是趋向面向对象的一种语言,至少它不能很好的吻合面向对象最基本的三大特性(继承、封装、多态),当然有很多人就认为JavaScript是面向对象语言,好像也说得没错,因为面向对象也能在JavaScript中实现,比如说继承、封装吧也都可以在JavaScript中实现,但是实现方便吗?所以我觉得很疑惑。看到网上有一网友评价的很好,"面向对象只是一种思想,语言只能说是否很好的支持面向对象的特性。"如果对面向对象有一定的认识,用C也能写出面向对象的程序,javascript也是如此。所以说不能断言说JavaScript是面向对象语言,呵呵,自认为是菜鸟,不敢妄自断言,还是看看代码:
company.address='北京';
company.produce= function(message)
2.使用JavaScript中的Object类型
company.address='杭州';
company.produce= function(message)
this.produce= function(message)
window.address='北京';
window.produce= function(message)
company.apply= function(o, c,)
if(o&& c&& typeof c=='object')
emptyObject= Ext.apply(emptyObject,company);