日期:2014-05-16  浏览次数:20370 次

js类与继承

JavaScript 类

一、javascript也作为一种面向对象的语言,它也可以有类,有对象,可以用new来创建类实例,用实例调用它的方法。只是javascript中类形式与java以及其他面向对象语言有所差异而已。

二、类举例

function className()
{
?this.a = 8;
?this.setA = function (parame)
?{
??this.a = parame;
?};
}

function testClass()
{
?var cls = new className();
?document.write(cls.a);
?cls.setA(9);
?document.write(cls.a);
}

================================

深入理解javascript类,参考一下

================================

三、this关键字

this属性表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 我们还可以使用apply和call两个全局方法来改变函数中this的具体指向。

先看一个在全局作用范围内使用this的例子:

<?script?type="text/javascript">?

????console.log(this?===?window);??//?true ?

????console.log(window.alert?===?this.alert);??//?true ?

????console.log(this.parseInt("021",?10));??//?10 ?

<?/script>

?

函数中的this属性是在运行时决定的,而不是函数定义时,如下:

//?定义一个全局函数 ?

function?foo()?{ ?

????console.log(this.fruit); ?

} ?

//?定义一个全局变量,等价于window.fruit?=?"apple"; ?

var?fruit?=?"apple"; ?

//?此时函数foo中this指向window对象 ?

//?这种调用方式和window.foo();是完全等价的 ?

foo();??//?"apple" ?

?

//?自定义一个对象,并将此对象的属性foo指向全局函数foo ?

var?pack?=?{ ?

????fruit:?"orange", ?

????foo:?foo ?

};

//?此时函数foo中this指向window.pack对象 ?

pack.foo();?//?"orange"??

全局函数apply和call可以用来改变函数中this属性的指向,如下: