JavaScript面向对象特性
来源:互联网 发布:reduce() python 编辑:程序博客网 时间:2024/05/16 14:03
1.null和undefined
null是JavaScript的一个关键字,它表示空值。null可以看做是Object类型的一个特殊值,如果一个对象的值是null,其含义就是该对象不是一个有效的对象。
undefined不是JavaScript的关键字,它是一个全局变量,也就是Global对象的一个属性值。在JavaScript中,有以下3种可能的情况会返回undefined:
(1) 使用了一个未定义的变量
(2)使用了已经定义但是没有赋值的变量
(3)使用了一个对象的属性,但是该属性不存在或者未赋值
虽然undefined和null不同,但是运行下面的代码会返回true
alert(undefined==null);
下面的代码运行结果也会返回true
var v="";
alert(v.a==null);
alert(v.a==undefined);
这是因为undefined和null都代表了值的缺失,所以在这里他们是等值的。当然它们不是完全相等,因此下面的代码会返回false
alert(undefined===null)
2.JS中的函数
JavaScript的Function对象在调用过程中具有一个arguments属性,它是由脚本解释器创建的(这也是创建arguments的惟一途径)。arguments属性可以看做是一个Array对象,它具有length属性,可以通过序号访问每一个参数,而且通过arguments的callee属性可以获取对只在执行的Function对象的引用。
callee属性的应用
function factorial(n){
if(n<0){
return -1;
}else{
return n*arguments.callee(n-1);
}
}
alert(factorial(5));
例中的factorial函数实现了阶乘的计算,它利用callee属性完成了匿名的递归调用
Function对象的另一个属性是caller,它指向正在调用当前函数的父函数对象。利用callee和caller属性,可以很容易地实现对调用堆栈的遍历。
3.apply和call方法
apply方法和call方法有相似之处,两者都是将函数绑定到其他对象上执行的,区别在于调用参数的形式不同。调用apply和call方法的语法如下:
apply(thisObj[,argArray])
call(thisObj[,arg1[,arg2[,[,..argN]]]])
通过apply方法时,参数是通过Array对象传入的;而通过call方法时,参数是一次给出的
function ClassA() {
this.prop="ClassA";
this.methodA=function(msg){
alert(this.prop+":"+msg);
}
}
function ClassB() {
this.prop ="ClassB";
this.methodB=function (msg) {
alert(this.prop+":"+msg);
}
}
var obj1=new ClassA();
var obj2=new ClassB();
obj1.methodA("msg1"); //输出"ClassA:msg1";
obj2.methosB("msg2"); //输出"ClassB:msg2";
obj1.methodA.apply(obj2,["msg1"]); //输出“ClassB:msg1”;
obj2.methodB.apply(obj1,["msg2"]); //输出"ClassA:msg2";
obj1.methodA.call(obj2,"msg1"); //输出“ClassB:msg1”;
obj2.methodB.call(obj1,"msg2"); //输出"ClassA:msg2"
4.this 和with 关键字
在JS中,this关键字常用于两种地方:
(1) 在构造器函数中,指代新创建的对象实例;
(2) 在对象的方法被调用时,指代调用该方法的对象实例
如果一个函数被当做普通函数调用,那么在函数中的this关键字将指向window对象。当然如果this关键字不在任何函数中,那么它也指向window对象。
JS中的with关键字通常用来缩短特定情形下必须编写的代码量
如:
x =Math.cos(3*Math.PI) +Math.sin(Math.LN10);
y=Math.tan(14*Math.E);
当使用with语句时,代码变得更短且易读:
with(Math)
x=cos(3*PI)+sin(LN10);
y=tan(14*E);
5.FOR(.....in....)
使用其可以遍历对象的所有属性和方法
}
- Javascript面向对象特性
- JavaScript面向对象特性
- 【javascript】javascript之面向对象高级特性
- [转载]javascript 的面向对象特性参考
- 领悟 JavaScript 中的面向对象特性
- [转载]javascript 的面向对象特性参考
- 面向对象的 Javascript 语言特性:引用
- 面向对象的 Javascript 语言特性:引用
- JavaScript面向对象特性实践一
- javascript 面向对象特性与编程实现
- javascript 的面向对象特性参考
- javascript 面向对象特性与编程实现
- Javascript面向对象的多态特性
- JavaScript面向对象特性的运用(2010072917)
- javascript 面向对象特性与编程实现
- javascript 面向对象特性与编程实现
- Javascript 面向对象 属性特性
- javascript进阶——面向对象特性
- 测试struts.xml中result参数的不同返回不同的json数据
- 中断解析
- zen cart -- 自适应配置文件
- Exercises 2-7
- SQL编程 行转列
- JavaScript面向对象特性
- Exercises 2-6
- Visual Studio 2008 使用 WinCE 5.0 Emulator
- Opencv学习笔记(八)视频流2
- android 使用timer
- 使用jQuery插件实现添加用户
- 位操作
- [c/c++] C++库资源
- 用jquery实现全选、全不选、反选 //很好用//