JavaScript面向对象特性

原创 2012年03月28日 22:58:39

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是这门语言被设计出来时就考虑的问题,熟悉OOP编程的概念后,学习不同的语言都会发现不同语言的实现是不同的,javascript的面向对象特性与其他具有面向对象特性的语言的...

从 prototype.js 深入学习 javascript 的面向对象特性

从 prototype.js 深入学习 javascript 的面向对象特性 js是一门很强大的语言,灵活,方便。 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽。 不过我接触的...

javascript 面向对象特性与编程实现

在 06 年用 javascript 写过上千行的应用,现在的项目中经常用到 javascript ,说不熟悉吧也熟悉了。说熟悉吧, javascript 的面向对象部分还是比较陌生。实际上自己没有系...

prototype.js 让你更深入的了解javascript的面向对象特性

从 prototype.js 深入学习 javascript 的面向对象特性 js是一门很强大的语言,灵活,方便。 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽。 不过我接触的...

javascript 面向对象(六)原型的特性和作用

1、根据实例对象获得原型对象    Object.getPrototypeOf() function Person(){ } Person.prototype.name = "梁"; ...

深入学习javascript面向对象及高级特性

JavaScript 对象是词典,对象只是一组名称/值对,就是说,将 JavaScript 对象视为包含字符串关键字的词典,只接受字符串关键字。我们可以使用熟悉的“.”(点)运算符或“[]”运算符,来...

利用javascript的面向对象的特性实现限制试用期

利用javascript的面向对象的特性实现限制试用期 Javascript是一种面向对象的脚本语言,其也具有面向对象的三大特性,但是今天我们不详细的讲解javascript的面向对象特性,今天我们...

prototype.js 让你更深入的了解javascript的面向对象特性

转自:http://www.iteye.com/topic/57760 js是一门很强大的语言,灵活,方便。 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽。 不过我接触的动态语...

javascript 面向对象特性与编程实现

在 06 年用 javascript 写过上千行的应用,现在的项目中经常用到 javascript ,说不熟悉吧也熟悉了。说熟悉吧, javascript 的面向对象部分还是比较陌生。实际上自己没有系...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)