总共有四种
1
函数调用模式 这种事最常见的 也是最简单的
// 声明一个函数,并调用 function func() { console.log("Hello World"); } func(); //输出是 Hello World 或者写成这样 // 使用函数的Lambda表达式定义函数,然后调用 var func = function() { console.log("你好,高帆"); }; func(); //输出是 你好,高帆 //javascirpt中,函数可以用箭头语法(”=>”)定义,有时候也叫“lambda表达式”。
2
方法调用模式
将函数赋值给对象的成员后 那么这个就不在称为函数 而应该叫做方法
// 定义一个函数 var func = function() { console.log("我是?"); }; // 将其赋值给一个对象 var o = {}; o.fn = func; // 注意这里不要加圆括号 // 调用 o.fn(); //输出我是?
o.fn 则是方法,不是函数了
3
构造器模式
在一般函数模式下,this 表示 window;在对象方法模式下,this 指的是当前对象。除了这两种情况,JavaScript 中函数还可以是构造器 函数作为构造器模式使用就是在函数调用前面加上一个 new
// 定义一个构造函数 var Person = function() { this.name = "中国"; this.sayHello = function() { console.log("你好" + this.name); }; }; // 调用构造器,创建对象 var p = new Person(); // 使用对象 p.sayHello(); //输出是 你好中国
首先创建一个构造函数Person,然后使用构造函数创建对象p。这里使用 new 语法。然后在使用对象调用sayHello()方法
扫描二维码关注公众号,回复:
305748 查看本文章
4
apply调用模式
apply 模式既可以像函数一样使用,也可以像方法一样使用
函数名.apply(对象, 参数数组)
1、新建两个 js 文件,分别为”js1.js”与”js2.js”;
2、添加代码
// js1.js 文件中 var func1 = function() { this.name = "高帆"; }; func1.apply(null); console.log(name); // js2.js 文件 var func2 = function() { this.name = "程序员"; }; var o = {}; func2.apply(o); console.log(o.name);
使用 apply 模式 可以任意的操作控制 this 的意义
js 中的函数调用有四种模式,分别是:函数式、方法式、构造 器式和 apply 式. 而这些模式中,this 的含义分别为:在函数中 this 是全局对象 window,在方 法中 this 指当前对象,在构造函数中 this 是被创建的对象,在 apply 模式中 this 可以随意的指定.。在 apply 模式中如果使用 null,就是函数模式,如果使用对象,就是方法模式。