JavaScript有强大的串处理功能,有了这些串方法,才能编写出丰富多彩的网页。
在这一部分里,我们将介绍到如何使用与串对象有关的方法和属性。 1。
串对象的length属性 串对象仅有一个属性length,这个属性值表示这个串所包括字符的相对数目。 语法为: stringName。
length 2。串对象的方法 JavaScript提供了多个串方法以帮助控制显示信息。
串方法可以分为几个大类,如属性方法、导航方法等等。下面我们将分类介绍。
(1)属性方法 串的属性方法指定了普通文本显示在屏幕上的方式。 它提供了一种理想的方式使主页变得更有吸引力。
blink() blink()方法引起文本闪烁,语法形式如下: string。blink(); bold() bold()方法使串变为粗体。
语法形式如下: string。bold(); fontcolor() fontcolor()方法可以改变单个串的颜色,或者在每次重新装入页面或事件发生时,改变颜色。
同样,这个方法也有一个相对应的HTML标识-- fontcolor()的语法是 string。fontcolor(color); 在这里,color是一种颜色的合法表示。
italics() italics()方法把串变为斜体,以同其余文字区分开来,italics() 的语法如下: string。 italics(); (2)大小写方法 JavaScript严格区分字母的大小写。
为了方便地比较两个串,就要把它们都转化为大写或小写。串对象的大小写方法就支持在大小写之间转换。
toLowerCase() tolowerCase()方法把一个给定的串中每个字符转变成小写状态。 语法形式如下: string=stringValue。
toLowerCase(); toUpperCase() 与tolowerCase()方法相反是toUpperCase()方法,它把一个给定串转变成大写字符串。 string=stringValue。
toUpperCase(); (3)操作方法 操作方法提供了许多种在一个文本串内查找字符串的方法,其中包括charAt()、indexO f()、LastIndexOf()和substring()四种方法。我们可以使用这些方法格式化和操作用户输入的串变量,其中charAt()和 substring()两种方法从一个串中抽取一个或多个字符,剩下的两个方法返回待查找值的第一个字符在串中出现位置的数字值。
charAt() charAt()方法从一个给定串中返回指定位置的字符。它的使用方法如下: string。
charAt(index); 其中index是一个在0和小于串长度之间的一个数(串长度可以通过Length属性得到), substring() substring()方法从一个大串中返回它的一个子串。 它的语法形式如下: string。
substring(indexA,indexB) indexA和indexB两者都是在0和串长度之间的数字值。它们是串的两个下标。
indexOf() indexOf()方法返回在一个长串中与指定的串匹配的子串的位置。 它从左到右地查找给定的串,语法形式如下: string。
indexOf(searchValue,[fromIndex]); 其中string是indexOf()要在其中查找searchValue的串,而searc hValue是任何想要查找的字符或子串。 fromIndex是一个可选项,它指定查找开始的位置。
fromIndex的范围与charAt()和Subs tring()相似(0到length-1)。它不能大于或等于length,如果没有指定fromIndex,该方法认为其缺省地?并查找整个串。
indexOf()的返回值是searchValue首次出现的第一个字符的偏移量(从串的开头算起)。即使指定了fromIndex,该返回值仍是相对于串的开头的(有可能在前面一些的地方出现的se archValue将被忽略)。
lastIndexOf() lastIndexOf()方法与IndexOf()方法类似,只是它从右到左地查找串。 lastIndexOf()仍旧给出被查找串的首字符位置,而不是末尾字符的位置。
lastIndexOf()方法的语法形式如下: string。Last indexOf(searchValue); searchValue仍是想要查找的串。
(4)导航方法 使用超文本时会接触到锚(anchor)和链路的概念。 锚就如同在网页中放置的书标(你可以很方便地回到那儿);链路是对另一页面(或相同及不同页面的锚)的指引。
anchor() anchor()方法用来设置一个锚,它的语法形式很简单: string。anchor(anchorName); 考察下面的例子: var indexString="Index"; document。
writeln(indexString。anchor("anchorName")); 这条语句在屏幕上打印文本Index;anchorName是这个锚真正的名字。
像这样的锚一般被链路用来跳转到页面中锚的实际位置。 link() link()的功能是跳转到指定的目标。
它相当于标准HTML引用(由HREF属性指定的超文本引用)。它的语法形式也非常简单: linkText。
link(href) linkText是屏幕上的文本,href属性不一定是一个锚,它也可以是一个合法的URL引用。下面的例子说明如何用link()来创建直接跳转到前面创建的锚的链路; var indexStirng="Index" document。
writeln(indexString。link("#"+"anchorName")+" ") 这条语句在屏幕上打印链路格式的文本Index(通常在下面加下划线);anchorName是锚的实际的名字。
当单击这条链路时,这个锚将出现在浏览器用户窗口的顶部。 请注意:要保证在同一文档内部的锚的引用中加上#号。
在加#号的时候,要将它用双引号括起来并用加号与完整的引用连起来。可以参见前面的例子。
如果省略了#号,链路的目标就是一个文件而不是一个锚。单击这条链就会使浏览器试图装入名为anchorName(在本例中)的文件。
因为这。
1.对象字面量创建对象
var obj = { a:1,b:2 };
注意:对象字面量是一个表达式,这种表达式每次运算都会创建并初始化一个新对象,并计算这个新对象的每个属性值。所以如果在循环体内使用对象字面量,每次循环时都会创建新对象。
2.通过new运算符创建对象
var obj = new Object(); //创建空对象 var ary = new Array(); //创建空的数组对象
注意:new运算符后面跟的是一个函数调用,这个函数被称为构造函数。js中原始类型都包含内置的构造函数,也可以自己定义构造函数。
3.通过立即执行函数创建对象
var obj = (function(){ return {x:1,y:2};}());
注意:在立即执行函数内部一定要有return语句,return出的内容就是待创建的对象。
4.通过Object.create()创建对象
var obj = Object.create({x:1,y:2});
注意:Object.create()是一个静态函数,传入原型对象就可以创建继承此原型对象的对象,例如上面的例子中obj对象继承了x,y属性。
Javascript对象定义的几种方式一.工厂方式:先创建对象,再向对象添加方法和属性,封闭后调用不要使用new操作符创建对象。
使用这种方法有很多弊端,把方法定义在工厂函数内部的时候,每次调用的时候都会产生新的函数function factory(name,person,address,time){ var tmp=new Object; tmp.name=name; tmp.person=person; tmp.address=address; tmp.workTime=function(){ alert("we start to work at" + time); } return tmp;}var factory1=factory("drugs",100,"huashan Rd",10);var factory2=factory("TCMdrugs",100,"hongqiao Rd",11);factory1.workTime();factory2.workTime();//Here,factory1 and factory2 have different method对这种问题虽然可以用下面的方式改进,但是缺乏很好的封装性function factory(name,person,address,time){ var tmp=new Object; tmp.name=name; tmp.person=person; tmp.address=address; tmp.workTime=workTime(); return tmp;}function workTime(){ alert("we start to work at" + this.time);}二,构造函数方式,在构造函数内部不创建对象,使用this关键字,使用时候用new操作符,存在和工厂方式相同的问题,重复创建函数。function counstruct(name,person,address,time){ this.name=name; this.person=person; this.address=address; this.workTime=function(){ alert("we start to work at" + this.time); };}三.原型方式:利用prototype属性来实现属性和方法,可以通过instanceof 检查对象类型,解决了重复创建函数的问题,但不能通过传递参数初始化属性function Car(){}Car.prototype.color = "red";Car.prototype.doors = 4;Car.prototype.mpg = 23;Car.prototype.showColor = function(){ alert(this.color);};var car1 = new Car();var car2 = new Car();但是如果遇到下面的情况,又出问题了Car.prototype.drivers = new Array("mike", "sue");car1.drivers.push("matt");alert(car1.drivers); //outputs "mike,sue,matt"alert(car2.drivers); //outputs "mike,sue,matt"drivers是指向Array对象的指针,Car的两个实例都指向同一个数组。
四.混合的构造函数/原型方式:针对原型方式的解决方案function Car(sColor, iDoors, iMpg){ this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array("mike", "sue");}Car.prototype.showColor = function (){ alert(this.color);};var car1 = new Car("red", 4, 23);var car2 = new Car("blue", 3, 25);car1.drivers.push("matt");alert(car1.drivers);alert(car2.drivers);五.动态原型方式:这种方式是极力推荐的方式,避免了前面几种方式所出现的问题,提供了更友好的编码风格function Car(sColor, iDoors, iMpg){ this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array("mike", "sue"); if(typeof Car.initialized == "undefined"){ Car.prototype.showColor = function (){ alert(this.color); }; Car.initialized = true; }}var car1 = new Car("red", 4, 23);var car2 = new Car("blue", 3, 25);car1.drivers.push("matt");alert(car1.drivers);alert(car2.drivers);六.混合工厂方式:和工厂方式有些相似,但采用new关键字实例化,具有和工厂方式相同的弊端,不推荐使用。
可以参考如下内容:第一种模式:工厂方式[javascript] view plain copy print?var lev=function(){ return "啊打"; }; function Parent(){ var Child = new Object(); Child.name="李小龙"; Child.age="30"; Child.lev=lev; return Child; }; var x = Parent(); alert(x.name); alert(x.lev()); 说明:1.在函数中定义对象,并定义对象的各种属性,,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法2.引用该对象的时候,这里使用的是 var x = Parent()而不是 var x = new Parent();因为后者会可能出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象3.在函数的最后返回该对象4.不推荐使用这种方式创建对象,但应该了解第二种模式:构造函数方式[javascript] view plain copy print?var lev=function(){ return "啊打"; }; function Parent(){ this.name="李小龙"; this.age="30"; this.lev=lev; }; var x =new Parent(); alert(x.name); alert(x.lev()); 说明:1.与工厂方式相比,使用构造函数方式创建对象,无需再函数内部重建创建对象,而使用this指代,并而函数无需明确return2.同工厂模式一样,虽然属性的值可以为方法,扔建议将该方法定义在函数之外3..同样的,不推荐使用这种方式创建对象,但仍需要了解第3种模式:原型模式[javascript] view plain copy print?var lev=function(){ return "啊打"; }; function Parent(){ }; Parent.prototype.name="李小龙"; Parent.prototype.age="30"; Parent.prototype.lev=lev; var x =new Parent(); alert(x.name); alert(x.lev());。
js中的面向对象面向对象在js里有两个层次的含义,第一种是会使用面向对象函数;第二种是构造面向对象函数。
js也是面向对象中的一种写法,不过相对于java,js是一种弱数据类型,并不是严格意义上的面向对象。但是jq就是使用面向对象的写法创作出来的js库。
面向对象的特点(“抽风机”谐音记忆) 面向对象有四个特点: 1. 抽象:抓住核心问题 2. 封装:即把能够实现功能的函数写成封装起来,在面向对象里叫做方法。简单来说就是把实现功能的函数写成方法。
3. 继承:继承的意思是,在实现同一种功能的前提下,新对象可以使用就对象的属性和方法。 4. 多态:一个变量在引用不同类型的情况下的不同状态。
多态开发在开发组件和模块化开发的时候能节省很多资源。举个例子说明面向对象// 这里的函数名在面向对象里叫做类function Create(n, s){// var obj = new Object();// obj叫做实例,同时也是对象,面向对象写法中系统会自动创建一个obj空对象// 对象属性this.name = n; this.sex = s; // this指针,在这里指的就是这个对象// 对象方法this.showName = function(){alert(n);}; this.showSex = function(){alert(s);}; // 返回对象// 同样,面向对象中系统会自动帮我们返回obj(即this)//return obj;//return this;}原型(prototype)原型可以用来构造函数的属性和方法,使这个构造函数的属性和方法成为公用的。
使用原型的优点:在内存中节省资源,提高系统性能。下面举个例子说明原型:Array.prototype.sum = function(){var num = 0; for(var i=0;inum += this[i];}alert(num);};1234567这是一个用原型构造的数组方法,将求和的sum方法挂在原型上,可以使这个方法被重复使用,当然,重点是节省内存资源。
使用原型还有一个优点,就是优先级: 原型的优先级类似于CSS中的优先级,没有使用原型的构造函数,就好比CSS中的行内样式,优先级高,而与原型挂钩的属性和方法 ,就像是style的内联样式,优先级低于行内样式。所以在调用同一种方法名的时候,系统会优先调用挂在原型上的方法。
abs(x)
返回数的绝对值。
acos(x)
返回数的反余弦值。
asin(x)
返回数的反正弦值。
atan(x)
以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
atan2(y,x)
返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
ceil(x)
对数进行上舍入。
cos(x)
返回数的余弦。
exp(x)
返回 e 的指数。
floor(x)
对数进行下舍入。
log(x)
返回数的自然对数(底为e)。
max(x,y)
返回 x 和 y 中的最高值。
min(x,y)
返回 x 和 y 中的最低值。
pow(x,y)
返回 x 的 y 次幂。
random()
返回 0 ~ 1 之间的随机数。
round(x)
把数四舍五入为最接近的整数。
sin(x)
返回数的正弦。
sqrt(x)
返回数的平方根。
tan(x)
返回角的正切。
toSource()
返回该对象的源代码。
valueOf()
返回 Math 对象的原始值。
作用和用法?数学函数需要什么用什么啊。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.795秒