JavaScript里的函数调用

一.函数调用形式:

function fun(){

alert ("123");

fun( );

var fun =function (){

alert ("123");

}

fun( );

函数调用也称一般调用,在函数调用模式中,this关键字指的是全局对象,如果在浏览器中就是指的是window。

二.方法调用:

var fun=function(){

alert("1234");

};

var a={};

a.fn=fun;

a.fn();

var func=function(){

console.log(this);

};

var o={};

o.fn=func;

func(); //"[object Window]"

o.fn(); //"[object Object]"

console.log(o.fn===func);//true

这时调用的是对象a上面的方法fn,函数调用和方法调用的区别就是this关键字的指向,函数调用this指的是全局对象,方法调用中的this指的是当前对象。

三.构造器调用:

var Person=function(){

this.name = ' 英雄联盟 ' ;  //此时的this是window

this.say = function(){

console.log ( "欢迎来到"+this.name );

};

};

var p=new Person() ; //new创建一个p对象

p.say(); //当p调用say方法时,this就是p对象。

在构造函数中this指的是被创建的对象。

1.所有需要有对象使用的属性,必须使用this引导。

var Person=function(){

this.name='英雄联盟';

return {

name:'data'

}

};

var p=new Person();

console.log(p.name);//data

var Person=function(){

this.name='英雄联盟';

return 'data';

};

var p=new Person();

console.log(p);//"[object Object]"

console.log(p.name);          //'英雄联盟'

2.函数的return语句意义被改写,如果返回的是原意,那么保留return的意义,返回return后面的对象,如果返回非对象(字符串,数值,布尔等),就返回this,不指定return返回的也是this。

四.apply调用模式:

var Person=function(){

this.name='英雄联盟';

console.log(this); // "[object Window]"

};

Person.apply(null);    //使用了null

console.log(name);

var Person2=function(){

this.name='英雄联盟';

console.log(this); //"[object Object]"

};

var o={} ;           //使用了对象

Person2.apply(o);

console.log(o.name);

函数作为对象还有apply方法和call方法使用。

apply和call的区别就是apply中的参数是数组。

使用call和apply模式可以任意操作this的意义,在这个模式中如果使用了null,就是函数模式,如果使用了对象,就是方法模式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,827评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,102评论 1 10
  • 原文链接 Haskell和scala都支持函数的柯里化,JavaScript函数的柯里化还与JavaScript的...
    dreamapple阅读 2,557评论 0 24
  • 长久以来,面向对象在 JavaScript 编程范式中占据着主导地位。不过,最近人们对函数式编程的兴趣正在增长。函...
    神刀阅读 484评论 0 0
  • 如何控制alert中的换行?\n alert(“p\np”); 请编写一个JavaScript函数 parseQu...
    heyunqiang99阅读 1,101评论 0 6