JavaScript笔记(2)

[size=large][color=darkred][b]1 JavaScript创建对象的方式[/b][/color][/size]
var obj = new String();
obj = new Object;//Object本身也是对象
alert("obj对象的构造函数为:" + obj.constructor);
alert("Object对象的原型为:" + Object.prototype);

注:不推荐第一种创建对象的方式,不要省略那一对小括号。

[size=large][color=darkred][b]2 JavaScript访问属性的方式[/b][/color][/size]
var a = new Object();
a.x = 1;
alert(a.x);//第一种访问属性的方式
alert(a["x"]);//第二种访问属性的方式
alert(a.constructor.prototype);
alert(a["constructor"]["prototype"]);


[size=large][color=darkred][b]3 JavaScript添加属性的方式[/b][/color][/size]
var a = new Object();
a.x = 1;//生成变量属性
a["func"] = function(){//生成函数属性
++this.x;//this表示对象a本身
}
a.func();
alert(a.x);//显示为2


[size=x-large][color=darkred][b]
4 JavaScript的内置对象[/b][/color][/size]

[size=large][color=indigo][b]【1】Global对象[/b][/color][/size]

[b][color=brown](1)Global对象是JavaScript对象模型中的最高级,一切声明的变量和函数都是它的属性。在浏览器中的Global对象就是windows对象。例:[/color][/b]
//声明和定义windows对象的属性。
var PI = "PI的值为:";
var value = "3.1415926";
function getPI(){
var value = "3.14";//注意这里的局部变量
alert((this === window) + "\n" + this.PI + this.parseFloat(this.value));
}
window.getPI();
结果为:true
PI的值为:3.1415926

[b][color=brown](2)关于this指针[/color][/b]

(2.1)在全局执行环境中使用this,表示Global对象,在浏览器中就是windows对象。
(2.2)在函数执行环境中使用this时,情况就比较复杂了。如果函数没有明显的作为非windows对象的属性,而只是定义了函数,不管这个函数是不是定义在另一个函数中,这个函数中的this仍然表示windows对象。如果函数显示地作为一个非windows对象的属性,那么这个函数中的this就代表这个对象。例如:
var o = new Object();
o.func = function() {//对象o的func属性为一个函数
alert("作为属性的函数: " + (this === o));//判断this是否为函数所绑定的对象
(function(){//创建一个内部匿名函数并执行
alert("普通函数: " + (this === window));//判断this是否为windows对象
})();
}
o.func();
结果为:作为属性的函数: true
普通函数: true


[size=large][color=indigo][b]【2】Object对象[/b][/color][/size]

[b][color=brown](1)Object对象是所有对象的基础,任何其他对象都是从Object对象扩展而来。[/color][/b]

[b][color=brown](2)任何对象都包含一个Prototype属性,这个属性本身也是一个对象。当程序试图获取对象中的属性(以String对象的a属性为例)时,会执行以下步骤:
(2.1) 查找String对象本身是否有名为a的属性,如果有,返回程序。
(2.2) 查找String对象的prototype属性对象(Sp)中是否有名为a的属性,如果有,返回程序。
(2.3) 继续查找上一级原型对象的prototype属性(注:这里不会查找原型对象的a属性)的a属性,直到上一级原型对象为null。
例如:[/color][/b]
Object.prototype.a = 3.14;
Object.b = 1024;
alert("Object对象的实例: " + new Object().a);
alert("String对象: " + String.a);
alert("String对象: " + String.b);
结果为:Object对象的实例: 3.14
String对象: 3.14
String对象: undefined

[size=large][color=indigo][b]【3】Function对象[/b][/color][/size]
[b][color=brown]当使用function关键字定义一个函数时,实际上是创建了Function类的一个对象实例。下面例子是等价的:[/color][/b]
var func1 = new Function("a", "b", "return a - b");
alert(func1(3, 4));

var func2 = function(a, b){
return a - b;
}
alert(func2(3, 4));


(3.1)一个函数重用的实例:
Object.prototype.shift = function(){
alert(this.color);
}

var redCar = new Object();
redCar.color = "红色";

var blueCar = new Object();
blueCar.color = "蓝色";

redCar.shift();
blueCar.shift();
结果为:红色
蓝色

[size=large][color=indigo][b]【4】Array对象[/b][/color][/size]
[b][color=brown](4.1)删除元素[/color][/b]
var arr = new Array(1, 2, 3);
arr.splice(1, 1);//从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。函数原型是:arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
alert("数组长度为: " + arr.length + "\n内容为: " + arr);
结果为:数组长度为: 2
内容为: 1,3
[b][color=brown](4.2)排序算法[/color][/b]
var arr = new Array(4, 9, 3, 8, 15);

//从小到大排序
arr.sort(function(a, b){return a - b;});//自定义排序规则
alert("从小到大:" + arr);

//反置数组中的元素顺序
arr.reverse();
alert("从大到小:" + arr);


[size=large][color=indigo][b]【5】String对象[/b][/color][/size]
[b][color=brown](5.1)通过一对双引号(或单引号)创建的变量是String类型的一个值,String类型表示字符串类型,是基本类型[/color][/b]
[b][color=brown](5.2)内置对象String是一个构造函数,类型是Function。[/color][/b]
[b][color=brown](5.3)通过new操作符来调用String构造函数创建的String实例对象,是Object类型的一个值,Object类型表示对象类型,不是基本类型。[/color][/b]
//定义一个String基本类型的变量
var str = "abc";

//通过String构造函数创建一个Object类型的字符串对象
var strObj = new String("abc");

alert("str的类型: " + (typeof str)
+ "\nstrObj的类型: " + (typeof strObj)
+ "\nString的类型: " + (typeof String));


[size=large][color=indigo][b]【6】Date对象[/b][/color][/size]
通过创建Date构造函数的实例对象,可以获取计算机中的时间。
var now = new Date();
alert(now);
//结果为:Tue Sep 23 2014 10:36:58 GMT+0800

//时间比较(可以直接使用大于或者小于号,但是不能使用等号,这个操作会被系统认为是比较两个变量是否引用了同一个对象)
var a = new Date();
var b = new Date(1900, 1, 1);//参数列表依次为年、月、日、分钟数、秒数、毫秒数
alert(a > b);//结果为true

var a = new Date();
var b = new Date();
alert(a == b);//false
//连续获取两个时间快照,在正常情况下不会达到毫秒误差,所以结果是true
alert(a.valueOf == b.valueOf);
alert("当前年份: " + a.getYear()
+ "\n距时间基点相差: " + parseInt(a/(24 * 60 * 60 * 1000 * 365)));


[size=large][color=indigo][b]【7】RegExp对象[/b][/color][/size]
[b][color=brown](7.1)创建正则表达式对象[/color][/b]
一共有两种方式创建正则表达式对象,第一种方式实际是调用第二种方式(RegExp构造函数)。
//创建方式1
var regExp = /^http[s]?:\/\//;
alert(regExp.test("http://"));//结果为true

//创建方式2
regExp = new RegExp("^http[s]?:\/\/");
alert(regExp.test("https://"));//结果为true

//如果匹配模式需要动态改变是,创建方式1就无法使用了,只能使用方式2
var head = "http";
regExp = new RegExp("^" + head + ":\/\/");


[b][color=brown](7.2)匹配表达式[/color][/b]
/表达式/:两个斜杠之间放入表达式语句。
var str = "hi` everyone";
str = str.replace(/hi/, "hello");///hi/表示正则表达式
alert(str);
//结果为hello` everyone


[size=large][color=indigo][b]【8】Math对象[/b][/color][/size]
[b](8.1)Math.tan(n):计算n的正切值。[/b]
[b](8.2)Math.sin(n):计算n的正弦值。[/b]
[b](8.3)Math.sqrt(n):计算n的平方根。[/b]
[b](8.4)Math.power(n, m):计算n的m次方。[/b]
[b](8.5)Math.abs(n):计算n的绝对值。[/b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值