Javascript 五个特性介绍

一、apply介绍

1、apply是前端javascript方法默认自带的方法,这要的用法是替换掉当前执行的方法的this对象,从而实现继承,或者修改方法内部使用到this对象;

这次先说继承:

例如:

首先,在test方法里边声明两个方法,add,sub:

function test(){

this.add=function(a,b){

return a+b;

}

this.sub=function(a,b){

return a-b;

}

}

然后,我们接着定义一个方法test2:

function test2(){

 test.apply(this);

}

接着,我们生成实例t2,实例化过程中test2成为t2的构造函数,此时test2方法里头的this对象是指t2的;

var t2=new test2();

那么现在,我们可以测试t2:

t2.add(2,1);

t2.sub(3,2);

结果是不是很神奇。

2、apply有一个重要的特性就是改变当前执行的方法的this对象;

例如:

<input type='file' id='test'/>

首先我们定义一个检测文件后缀名的方法,此时的this对象是指向window,我们看下边的两个测试例子:

function checkFileType(){

var _value=this.value;

var pattern=/\.[a-zA-Z]$/;

var result=pattern.exec(_value);

if(result!=null)

console.log(result);

else

console.log('not find');

}

那么现在我们就使用apply:

 

$("#test").click(function(){

checkFileType();

});

 

$("#test").click(function(){

checkFileType.apply(this);

});

此时我们会发现,第一个打出的是not find,第二个正确的打印出了附件后缀名。

到此就介绍完了apply两个核心用法,继承与改变当前执行方法的this对象。

二、prototype特性

prototype是前端方法默认自带的属性,主要的用处是在实例之间共享方法;例如:

function test(){};

test.prototype.add=function(a,b){

return a+b;

}

test.prototype.sub=function(a,b){

return a-b;

}

var t1=new test();

var t2=new test();

t1.add(2,1);

t2.add(3,2);

t1.sub(2,1);

t2.sub(3,2);

从上面的例子,我们可以看到t1,t2两个实例都可以调用到add,sub这两个方法;

三、this对象

由于javascript是解释型语言,所以this只有在执行中才能确定。

在实践中我们可以总结出this的规律,this指向当前方法所属的实例:

 1、例如:function test(){

console.log(this);}

test();

此时我们发现this指向window,因为test()是定义在window里边的方法,即我们可以这样调用window.test(),也就是说test是window的方法。

2、test.prototype.add=function(){

console.log(this);}

var tt=new test();

tt.add();

此时,我们定义了一个实例tt,add是实例tt的一个方法,我们会发现this指向tt。

3、结合juqery使用

我们常常见到:$("#xx").click(function(){

console.log(this);

});

此时this是指向("#xx")实例的,有兴趣可以抽出源代码看看()是jquery的一个工厂方法,返回的是一个实例。

上面的例子,click方法属于("#xx")实例的因此,click内部的this指向("#xx")。当click调用回掉方法时,会使用fn.apply(this),因此我们在回掉方法打印出来的this是指向$("#xx")的。

四、arguments

在javascript里边arguments是一个数组,用来接收当前方法传入的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值