`

javascript object

 
阅读更多
Date() 是一个constructor function,你可以创建新的date Object 可以传递一些这些值:
*默认不传值,获取当天时间
*date 型的字符串
*它可以分离出day month year time ....
一个date object 回去当天时间:
>>>new Date()
Date {Fri May 24 2013 23:18:32 GMT+0800}
所有的对象都有toString()
使用一个string 去初始化一个日期,初始化一个string object ,有趣的是你可以用很多不同的string format 的日期格式去初始化
>>> new Date('2013-11-12')
Thu Nov 12 2013 00:00:00 GMT-0800 (Pacific Standard Time)
>>>new Date('1-1-2013')
Date {Tue Jan 01 2013 00:00:00 GMT+0800}
>>> new Date('1 mar 2012 5:30')
Date {Fri Mar 01 2013 05:30:00 GMT+0800}

从不同的string 得到日期这是javascript 比较好的方面。但是这不是一个严格定义日期的方式,比较好的方式是通过数字调用Date的constructor重新设置
这个日期如:
Year
Month 0 -11
day 1 - 31
hour 0- 23
Minutes 0-59
seconds 0 -59
milliseconds  0- 999
>>>  new Date(2013,5,24,22)
Date {Mon Jun 24 2013 22:00:00 GMT+0800}
注意月份是从0 开始的
如果你设置的value 比允许的值大,那么他将会溢出,它将会按照正常的日期进行累加,如:
>>> new Date(2013,1,30)
Date {Sat Mar 02 2013 00:00:00 GMT+0800}
因为2013不是闰年,所以2月只有28天所以它变成3月
如果你调用一个Date()没有用new那么你将会得到一个当前日期的字符串,无论你传递的字符串是否被通过它都会得到当前时间.

/**
*Date() Object 的一些方法
**/
一旦你定义了一个Date() Object 你就可以调用这个object 的方法,大多数的方法可以分为两大类 get* method 和 set* method如:
getMonth setMonth getHours() ....
>>>var d = new Date();
>>>d.toString();
"Sat May 25 2013 11:16:34 GMT+0800"
设置一个month的值,d.setMonth(2)
1364181394679
>>>d.toString()
>>>d.getMonth()
2
"Mon Mar 25 2013 11:16:34 GMT+0800"
对于Date附带的方法有两个方法不需要对Date进行实例化就可以使用的方法,在class-object oriented语言中这个角静态的属性或方法
Date.Parse()会return 一个timestemp从一个string中。
>>>Date.parse('Jan 1,2008');
11917400000
Date.UTC() 可以接受 year month day 等参数,然后返回一个timestemp
>>>Date.UTC(2013,0,1)
1356998400000
Date()的constructor可以接受timestemp所以可将这个数字转成Date

/**
*RegExp正则表达式
**/
regExp是个一个非常强大的对文本操作和搜索,如果你熟悉SQL的话,你可以把regexp 类似于SQL 使用,你可以使用SQL去查找和更新数据库,相同的
你也可以使用regExp 去查找和更新text
不同的语言对于表达式的实现有各不同,javascript 使用的是 Perl 5 的句法,有如下规则:
*一个pattern 你可以使用它来匹配字符,
* 0或者更多的修饰 是怎么样使用pattern
这个pattern可能是逐字的去进行文本匹配,大多数情况下可能是混合使用,让人很难明白,精通正则表达时的人,pattern是最多的话题,反而你会明白
javascript 会提供这么一组句法。
javasciprt 中RegExp()提供了一个constructor允许创建regexp 的 pattern ,如:
>>>var re = new RegExp(j.*t);
也有更简便的正则表达式的文本:
>>>var re = /j.*t/
这个pattern 的意思是匹配任意字符j开头t 结尾.有0个或多个字符在中间,*表示它之前的字符有0个或多个字符,. 表示任意个字符,pattern 当你使用
RegExp()构造创建时,需要使用引号

/**
*Regexp 的属性
**/
Regexp 表达式有以下属性:
*global : 这个属性默认是false ,当你第一次匹配成功,就停止搜索,如果想要全部匹配,那么可以将global 设置为true
*ignoreCase: 是否区分大小写字母,默认是区分的。
*multiline: 搜索超过一行的的间距,默认是false
*lastindex: 下次搜索开始的位置,这样可以搜索全部文本的的匹配字符。
/××××××
var str = "The rain in Spain stays mainly in the plain";
var patt1 = new RegExp("ain", "g");

for(i = 0; i < 4; i++)
  {
  patt1.test(str)
  document.write("ain found. index now at: " + patt1.lastIndex);
  document.write("<br />");
  }
×××××××/
执行后的结果 :
/××××××
ain found. index now at: 8
ain found. index now at: 17
ain found. index now at: 28
ain found. index now at: 43
××××××/
*Source: regexp 的pattern
有三个参数去说明一个regexp 的修改。如果你创建一个Regexp 对象,使用构造,你可以传入第二个字符参数:
a) "g" --global , b) "i" ignoreCae , c) "m" -- mutiline

这些字符可以是任意的顺序,如果这些字符被通过,那么就相当于被设置为true如:
>>> var re = RegExp('j.*t','gmi');
>>>re.global
true
一旦被设置,则不能被修改
>>>re.global = false
>>>re.global
true

对于设置regex literal 你可以在后面添加斜杠来结束
>>>var re = /j.*t/gm;
>>re.global
true

/***
*regexp 的方法
***/
regexp 提供了两个方法,一个是test()一个实exec() ,他们俩个都接受一个string parameter ,test()返回一个boolean ,exec 则返回一个匹配字符串的数组
显然exec()是可以做更多的事情,除非你真的要做一些其他事情,你可以使用exec() ,否则还是使用test(),人们经常使用规则表达式去做验证,在下面这个
例子里已经满足了:
>>>/j.*t/.test("Javascript")
false
如果忽略大小写进行匹配,将会得到一个true
>>>/j.*t/i.test("Javascript")
true
相同test 如果你使用exec() 你可以访问数组的第一个元素
>>>/j.*t/i.exec("Javascript")[0]
"Javascript"
/***
*string 的method 可以接受regular expressions作为参数
**/
前面我们讲过string 的method 可以接受正则表达式,使用这些方法你可以使用正则表达式进行搜索,这将是一个很好的办法,string object 提供了这个能力。
string object 提供了一下的方法可以接受正则表达式:
.match() return 匹配的数组
.search() return 一个首先匹配到的数组
.replace() return 置换后的字符串.
.split() 风隔一个字符串得到一个数组

/**
*search() 和 match()
创建一个string 对象:
var s = new String("HelloJavascriptWorld");
使用match()你可以得到一个仅包含第一次匹配上的的字符的数组
["a"]
如果使用g你可以进行全部的搜索,得到两个元素的数组。
>>>s.match(/a/g)
["a","a"]
使用忽略大小写的匹配
>>>s.match(/j.*a/i)
["Java"]
search()则给你一个匹配成功的位置
>>>s.search(/j.*a/i)
5


replace()
允许你将匹配的字符替换掉相应的字符,如下面将匹配的字符替换为空
>>>s.replace(/[A-Z]/g,'')
"elloavascriptorld"
如果省略掉了g 那么它只会匹配之后替换掉第一个匹配成功的字符
>>>s.replace(/[A-Z]/,'')
“elloJavascriptWorld"
当你使用这个方法时候如果要替换的文字,还要包含当前要替换的文字,可以使用$&
>>>s.replace(/[A-Z]/g,"_$&")
"_Hello_Java_script_World"

当你使用规则表达式包含多组时,你可以使用圆括号括起来,然后去匹配每一组有效的字符,第一组用$1 ,第二组 $2 等等
>>> var email = "stoyan@phpied.com";
>>> var username = email.replace(/(.*)@(.*)/, "$1");
>>> username;
"stoyan"
>>> var username = email.replace(/(.*)@(.*)/, "$2");
>>> username;
"phpied.com"

/***
*replace callback
**/
当你制定一个替换的元素时,你可以指定这个元素为一个function ,return 一个string, 这个时候你可以对它进行一些你的逻辑运算。
>>>str.replace(/[A-Z]/g,function(str){return str + " ---"})
"H ---elloW ---orld"
也可以不使用匿名函数

callback function 
replace :
a)第一个参数使用来匹配的
b)最后一个参数是正在search的string
c)匹配的前一个是后一个的起始位置
d)在你的pattern 包含所有的string 和 任意组

让我们来测试一下,首先创建一个变量存储 callback function 整个的arguments 数组
>>>var glob;
下面我们来定义一个正则式,有三个组,来匹配email 地址,
>>> var re = /(.*)@(.*)\.(.*)/
最后我们来定义一个callback function ,来处理返回,和参数存储

var callback = function(){
glob  = arguments;
return arguments[1] + ' at ' + arguments[2] +  '  dot ' + arguments[3];
}
我们来调用replace
>>>"ylyld753@gmail.com".replace(re,callback)
"ylyd753 at gmail dot com"

>>>glob
["ylyld753@gmail.com", "ylyld753", "gmail", "com", 0, "ylyld753@gmail.com"]


/***
*split
**/
我们已经知道split 的用法他是根据指定的分隔符来将一个string 风隔为一个数组
>>> var csv = 'one, two,three ,four';
>>> csv.split(',');
["one", " two", "three ", "four"]
因为我们输入的string 在逗号前后存在一些不一致的空格,我们可以用\s*来修该这个这个表达式  \s*表示0个或者多个空格
有的字符可能在正则表达式中有不同的意思:
如:
>>>"test".replace('t','r')
>>>"rest"


>>>"word".replace(new RegExp('w'),'r')
"rest"

当你在传递一个string 时你不能设置它的修饰符,作为你的构造和regexp

/***
*Error Object
**/

Error 的发生是一个比较好的设置机制,它能告诉你的代码哪里有错误,javascript 提供了try catch finally 等帮助你处理错误,如果有错误发生,那么
一个an error object 将会被抛出,error object 的创建使用的是constructor 内建的,EvalError, RangeError, ReferenceError,
SyntaxError, TypeError, and URIError.
所有这些构造都继承自Error object

我们可以通过对try catch...的利用来帮助我们编码
iDontExist()没有被定义。
try {
iDontExist();
} catch (e){
// do nothing
}
这里可以写一个finally语句,catch紧跟一个圆括号,里面一个变量e
可以通过e.message e.name 来获得exception的信息

/************************************************************************************************
*****prototype
*************************************************************************************************/

下面我们将学习function object 的prototype,理解prototype 如何工作是非常重要的。
javascript 是基于prototype 类型的Object mode 。prototype 没有什么特别困难的事情,但是它是一个新的观念,我们将讨论这些问题:
1)每一个function 都有一个prototype 属性,它包含了一个 object
2)添加属性到 prototype object
3)使用已经添加到 prototype 的属性
4)自己的属性和prototype 属性的差别
5)__proto__,是一个隐秘的连接到对象的 object 的 prototype。
6)Methods() 如: isPrototypeOf()  hasOwnProperty()  and propertyIsEnumerable()
7)增强object 的内建, 如: 数组 或者 string

/**
*prototype property
**/
function 在javascript中是一个object,所以包含了一些属性和方法,一些方法近视与apply() 和 call()
一些属性如: length 和 constructor ,prototype
如果你定义了一个functin foo()你可以访问它的属性同其它对象一样。
>>>function foo(a, b) { return a + b;}
>>> foo.length
2
>>>foo.constructor
Function()
prototype 是一个属性,如果一个function被定义,它就被创建,它的初始值是空对象。
>>>typeof foo.prototype
"object"
如果你添加这个属性到自己像这样:
>>>foo.prototype = {};
你可能增加一个空对像方法和属性,它将有不会有任何影响,当你调用foo()作为一个constructor时,它将仅仅只能被使用。

arguments 看起来像是一个数组但是,它是一个类数组的object,它似乎是一个数组,因为他有一个索引元素和length 属性,但是
却有一点不同,作为arguments 不提供一些数组的任何方法。
arguments 有一些其它有趣的属性,callee, 它包含了一个自己的引用,如果你创建了一个functin 然后return argumens.callee,
那么你在调用这个方法的时候你会得到一个这个function的简单应用。
(function(count){
if (count < 5) {
alert(count);
arguments.callee(++count);
}
})(1);
有一个匿名函数,接受了一个参数,alert 它,带这一个count++  ,包裹在圆括号里,然后跟着另一个圆括号,传递一个value 1
结果会显示4个alert  1,2,3,4
/**
*Boolean
**/
我们学习了javascript object 的内建,下来就比较容易了,
他们不仅仅包含原始的数据类型( primitive data type : boolean ,number ,string )
boolean 我们已经知道了,让我们来看看boolean的constructor
>>> var b = new Boolean();
创建一个新的object是非常重要的并且不是一个原始的boolean,可以会的原始的原始的value,你可以调用valueOf(),
>>> var b = new Boolean();
typeof b
"Object"
>>>typeof b.valueOf()
"boolean"
>>>b.valueOf()
此外通过Boolean 创建,构造是不可以使用的,因为他不提供任何方法和属性,这个还是比较有用的,调用一个普通的方法,不使用new
从不是boolean 转换为 boolean 相当于判断一个double 是否存在
>>>Boolean("test")
true
>>>Boolean("")
false
>>>Boolean({})
除了那六个falsy 的value,其他的都会得到一个true
创建两个Boolean object 一个是false,一个是true
var b1 = new Boolean(true);
b1.valueOf()
var b2 = new Boolean(false);
b2.valueOf()
让我们对他们进行转换,转换为原始的Boolean类型,这两个都是object 类型,因为他们是object
>>>Boolean(b1)
true
>>>Boolean(b2)
true

/**
*Number
**/
跟Boolean()一样:
一个普通的function 可以用它将任意的值转换成Number这个类似于parseInt(), parseFloat().
但创建一个对象时,被当作constructor 使用。
>>>var a = Number('12.02');
>>>a
12.02
typeof a
"number"

>>>var a = new Number('12.02');
>>>typeof a
"object"
因为function是一个object ,它有属性,这个Number 包含了一些比较有趣的内建属性,但是不允许修改
>>>Number.MAX_VALUE
1.7976931348623157e+308
>>>Number.MIN_VALUE
5e-324
>>>Number.POSITIVE_INFINITY
Infinity
>>>Number.NEGATIVE_INFINITY
-Infinity
>>>Number.NaN
NaN
number提供了三个function toFixed(), toPrecision(), toExponential()
>>>var n = new Number(123.234)
>>>n.toFixed(1)
123.2
可以用这些方法明确的创建一个数
>>>(12345).toExponential()
Number也提供了一个toString()可以指定radix

>>> var n = new Number(255);
>>> n.toString();
n.toString(16);
n.toString(16);
"ff"
>>> (3).toString(2);
"11"
>>> (3).toString(10);
"3"

/**
*String
*/
使用String() constructor可以创建String Object ,它提供了一些有用的方法,它提供了一些文本操作。
让我们看看string object 和原始的String有什么不同

>>>var primitive  = 'Hello';
>>>typeof primitive
"string"
>>>var obj = new String("world");
>>>typeof(obj)
"object"
一个string object 类似于一个characters array,这个string object 有一个index 的属性,也有一个length 的属性
>>>obj[0]
"w"
>>>obj[4]
"d"
>>>obj.length
5
可以使用通过valueOf() ,toString(), obj + ""来获取,原始的string 的value
>>>obj.ValueOf()
"world"

Primitive 的string 不是 object 所以它没有任何的属性和方法,javascript 仍然提供了一些句法,个string .
在下面的例子里,如果你每次访问的是一个string object 那么他将会每次都会被创建,然后销毁。
>>>"potato".length
6
>>>"tomato"[0]
t
>>>"potato"["potato".length-1]
"o"
最后,如果我们对一个空string 和string object 空进行Boolean 对象转换得到的值是不一样的:
>>>Boolean("")
false
>>>Boolean(new String(""));
true
跟 Boolean(), Number()一样如果你创建String() function 没有使用new ,那么它将会自动创建一个privitive string
这就意味着它调用toString()这个方法,
>>>String(1)
"1"
>>>String({p:1});

"[object Object]"

>>>String([1,2,3])
"1,2,3"
String Object的一些有趣的方法

/**
*String Object 的一些方法
*/
开始创建一个 string object:
>>>var s = new String("Couch potato")
toUpperCase() 和 toLowerCase() ,通过执行 primitive string 对string 进行大小写转换.
charAt() 告诉我们一个字符的位置,和方括号的形式相同。

>>>s.charAt(0)
"C"
>>>s[0]
"C"
如果输入一个不存在的位置会得到一个
""
允许search 一个字符串,它将return 一个位置。
>>>s.indexOf("o")
1

你可以设置它search 开始的位置,
>>>s.indexOf("o",2)
7
lastindexOf() 是从尾部开始搜索,但是它返回的索引仍然是从前开始索引的。
>>>s.lastindexOf('o')
11
你可以search 一个string
>>>s.indexOf("ch")
3
如果没有匹配的则返回 -1

如果你执行了indexOf 得到一个0这说明搜索的位置在0的位置,这可能会引起一些混淆,如果你通过if去检查的话,会这样:
if(s.indexOf('Couch')){ ...}这种句法是正确的但是从逻辑上来说确是错的。因为0会被认为是false 是没有被找到的。
所以我们坚持一个字符串中是否存在另一个字符串时可以用:
if(s.indexOf('Couch') !== -1){....}
slice() 和substring() 一样是截取字符串
>>>s.slice(1,5)
"ouch"
>>>s.substring(1,5)
"ouch"
****
*第二个参数,是结束的位置,而不是这个片段的长度,但是他们对于处理负数有一些不同,substring 它会当作 0处理,但是slice
则是会用它加上string 的长度,然后作为第二个参数。

>>>s.substring(1,-1)
"C"
>>>s.slice(1,-1)
"ouch potat"
split(" ")
它将会从string 中创建一个数组,通过传入的字符串去风隔
和split相反的是join()
>>>s.split(" ").join(" ")
"Couch potato"
concat 将string 紧附在一起,这种方式,和 + 一样是为了primitive string 创建的。
>>>s.concat(s,'es')
"coucat potatoes"

像这种indexOf lastindexOf  search()  match() repleace()都是支持正则表达式的


/****
*Math
**/
Math 和其他的全局对象有一点不同,他不是一个普通的function,因此它不能被new出来。Math是一个内建的全局对象,它提供了一些对
number 的方法和属性,用来做算术运算。
>>>Math.PI
3.141592653589793
>>>Math.SQRT1_2
0.7071067811865476 // 1/2的平方根

>>> Math.E
2.718281828459045
random()
返回的是0-1的一个任意随机数
>>>Math.random()
0.3862197122510961
如果你要得到一个1---100的随机数
>>>Math.random()*100
Math.floor() 取小数的整数,Math.ceil() 去小数的整数加1 Math.round() 四舍五入
Math.pow(2,8)

分享到:
评论

相关推荐

    JSON(JavaScript Object Notation)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立...

    Javascript Object Browser 扩展

    JavaScript Object Browser扩展是一种针对开发人员的实用工具,它专门设计用于可视化和探索JavaScript对象的结构。这个扩展在浏览器环境中提供了一个交互式的界面,允许开发者深入理解代码中的对象、属性和方法,...

    JavaScript Object toString 初始补充

    这篇名为“JavaScript Object toString 初始补充”的博客文章可能深入探讨了`toString`方法在JavaScript中的应用和一些不常见的用法。作者Will-2011在iteye.com上分享了这个话题,这通常意味着这篇文章会包含代码...

    Mastering JavaScript Object-Oriented Programming

    Mastering JavaScript Object-Oriented Programming 2016 | ISBN: 1785889109 | English | 287 pages | PDF | 1.9 MB With this book, we'll provide you with a comprehensive overview of OOP principles in ...

    JSON (JavaScript Object Notation).zip

    JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。它采用完全独立于语言的文本格式,同时也被广泛用于非JavaScript环境。JSON的设计目标是简洁和易于阅读及编写,同时也易于机器解析和生成。它是...

    JavaScript Object Programming 无水印pdf

    JavaScript Object Programming 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传...

    Javascript Object Oriented Programming 无水印pdf

    Javascript Object Oriented Programming 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请...

    JSON使用指南JSON 即 JavaScript Object Natation

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,设计用于高效地传输和存储数据,尤其适合服务器与JavaScript之间的交互。它的语法简洁且易于人类阅读和编写,同时也容易让机器解析和生成。JSON格式...

    那位大哥有javascript object 大全

    那位大哥有javascript object 大全

    JavaScript Object JSON

    JavaScript Object和JSON是Web开发中两个非常重要的概念,它们在数据交换和存储中扮演着关键角色。这篇博客将深入探讨这两个主题,以及它们之间的关系。 首先,JavaScript Object(JS对象)是JavaScript语言中的...

    JavaScript Object Programming(Apress,2015)

    This brief book explains the advantages of the object model, inheritance, both classical and prototypical, and shows how these concepts can be implemented in JavaScript. It also shows how object ...

    Mastering JavaScript Object-Oriented Programming 无水印pdf

    Mastering JavaScript Object-Oriented Programming 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如...

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式

    Javascript.Object.Oriented.Programming.pdf

    Build sophisticated web applications by mastering the art of Object-Oriented Javascript About This Book Learn popular Object-Oriented programming (OOP) principles and design patterns to build robust ...

    javascript Object与Function使用.docx

    ### JavaScript中的Object与Function #### 一、引言 随着JavaScript的发展与标准化,这门语言已经成为Web开发领域不可或缺的一部分。然而,在深入学习JavaScript的过程中,不少开发者对于语言内部的一些概念仍感...

    JavaScript Object toString 初始

    首先,`toString`方法是所有JavaScript对象的原型`Object.prototype`上的一个方法。这意味着,无论你创建何种类型的对象,它们都继承了这个方法。默认情况下,如果直接对一个对象调用`toString`,它会返回一个表示该...

    Javascript Object 对象学习笔记

    在这份“Javascript Object 对象学习笔记”中,将深入探讨JavaScript对象的基础知识、属性和方法。首先,我们需要明白什么是对象。在JavaScript中,对象是一种复合数据类型,它将许多值(原始值或其他对象)聚合在...

Global site tag (gtag.js) - Google Analytics