JavaScript笔记(2)

来源:互联网 发布:多人排班软件 编辑:程序博客网 时间:2024/04/29 17:31
1 JavaScript创建对象的方式
var obj = new String();obj = new Object;//Object本身也是对象alert("obj对象的构造函数为:" + obj.constructor);alert("Object对象的原型为:" + Object.prototype);

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

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


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



4 JavaScript的内置对象


【1】Global对象

(1)Global对象是JavaScript对象模型中的最高级,一切声明的变量和函数都是它的属性。在浏览器中的Global对象就是windows对象。例:
//声明和定义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

(2)关于this指针

(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


【2】Object对象

(1)Object对象是所有对象的基础,任何其他对象都是从Object对象扩展而来。

(2)任何对象都包含一个Prototype属性,这个属性本身也是一个对象。当程序试图获取对象中的属性(以String对象的a属性为例)时,会执行以下步骤:
(2.1) 查找String对象本身是否有名为a的属性,如果有,返回程序。
(2.2) 查找String对象的prototype属性对象(Sp)中是否有名为a的属性,如果有,返回程序。
(2.3) 继续查找上一级原型对象的prototype属性(注:这里不会查找原型对象的a属性)的a属性,直到上一级原型对象为null。
例如:

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

【3】Function对象
当使用function关键字定义一个函数时,实际上是创建了Function类的一个对象实例。下面例子是等价的:
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();
结果为:红色
蓝色

【4】Array对象
(4.1)删除元素
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
(4.2)排序算法
var arr = new Array(4, 9, 3, 8, 15);//从小到大排序arr.sort(function(a, b){return a - b;});//自定义排序规则alert("从小到大:" + arr);//反置数组中的元素顺序arr.reverse();alert("从大到小:" + arr);


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


【6】Date对象
通过创建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);//结果为truevar a = new Date();var b = new Date();alert(a == b);//false//连续获取两个时间快照,在正常情况下不会达到毫秒误差,所以结果是truealert(a.valueOf == b.valueOf);alert("当前年份: " + a.getYear()    + "\n距时间基点相差: " + parseInt(a/(24 * 60 * 60 * 1000 * 365)));


【7】RegExp对象
(7.1)创建正则表达式对象
一共有两种方式创建正则表达式对象,第一种方式实际是调用第二种方式(RegExp构造函数)。
//创建方式1var regExp = /^http[s]?:\/\//;alert(regExp.test("http://"));//结果为true//创建方式2regExp = new RegExp("^http[s]?:\/\/");alert(regExp.test("https://"));//结果为true//如果匹配模式需要动态改变是,创建方式1就无法使用了,只能使用方式2var head = "http";regExp = new RegExp("^" + head + ":\/\/");


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


【8】Math对象
(8.1)Math.tan(n):计算n的正切值。
(8.2)Math.sin(n):计算n的正弦值。
(8.3)Math.sqrt(n):计算n的平方根。
(8.4)Math.power(n, m):计算n的m次方。
(8.5)Math.abs(n):计算n的绝对值。
0 0
原创粉丝点击