JavaScript函数调用模式

1、方法调用模式:

var myObj = {
    value : 0;
    increment:function(inc){
        this.value += typeof inc === ‘number‘ ? inc : 1;
    }
}
myObj.increment();
console.info(myObj.value); // 1

  

2、函数调用模式:

当一个函数并非一个对象的属性时,那么它被当做一个函数来使用,这时 this 被绑定到全局对象,要解决这个问题,需要在内部重新命名一个变量。获取内部函数的控制权

myObj.double = function(){
    var _self = this;
    var helper = function(){
        _self.value = add(_self.value,_self.value);
    }
    helper(); //函数形式调用helper
};
myObj.double();
console.info(myObj.value);

  

3、构造器模式:

如果在一个函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成研的新对象,同时this将会被绑定到新对象上。

var Quo = function(str){
    this.status = str;
}
Quo.prototype.get_status = function(){
    return this.status;
}
//构造一个Quo实例
var myQuo = new Quo("abc");
console.info(myQuo.get_status());

  

4、Apply 模式:

apply方法构建一个参数数组并用其去调用函数,也允许我们选择this值,apply接收两个参数,一个是将被绑定给this的值,另一个是参数数组。

var arr = [3,4];
var sum = add.apply(null,arr);

//构造一个包含status成员的对象
var statusObj = {
    status : "OK"
};
//statusObj 并没有继承自Quo.prototype,但可以在statusObj上调用get_status方法,尽管statusObj并没有一个名为get_status的方法。
var status = Quo.prototype.get_status.apply(statusObj);
console.info(status);  //"OK"
时间: 2024-10-12 13:32:21

JavaScript函数调用模式的相关文章

JavaScript 方法调用模式和函数调用模式

这两天在读<JavaScript语言精粹>关于第4章函数调用的几种模式琢磨了半天. 这里就说一下方法调用模式跟函数调用模式. 方法调用模式: 当一个函数被保存为对象的一个属性时,我们称它为一个方法.当一个方法被调用时,this被绑定到该对象.如果调用表达式包含一个提取属性的动作(a.name或a[name]),那么他就是被当做一个方法调用. 1 var myObject = { 2 value:1, 3 double:function(){ //double是myObject对象的一个方法 4

javascript this 关键字以及四种函数调用模式

最近在学习javascript ,被js中的this关键字搞得晕头转向,都不知道这个东西到底是干什么的,不同的地方所指的对象又不一样.在查询了很多的资料以后,终于有了一些眉目了. this的定义:在javascript中,上下文对象就是this指针,即被调用函数所处的环境,上下文对象的作用是一个函数内部引用调用它的对象本身. 上面就是javascript中this关键字的定义,单纯的理解来说还是很好理解的,但是真正到用的时候发现又是另外一回事了. 说到this的用法,就要谈到到this的作用域,

javascript函数调用的各种方法!!

在JavaScript中一共有下面4种调用方式: (1) 基本函数调用 (2)方法调用 (3)构造器调用 (4)通过call()和apply()进行调用 1. 基本函数调用 普通函数调用模式,如: JavaScript code? 1 2 3 4   function fn(o){      --    }   fn({x:1}); 在基本函数调用中, (1)每个参数作为实参传递给声明函数时定义的形参: (2)this被绑定到全局变量(直接调用一般指的是window) JavaScript co

Javascript 严格模式与正常模式的区别

原来来自:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html Javascript 严格模式详解 作者: 阮一峰 日期: 2013年1月14日 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立"严格模式"的目的,主要有以下几个: - 消除Javascr

js中的4种函数调用模式

javascript一共有4种调用模式:函数调用模式.方法调用模式.构造器调用模式和间接调用模式. [1]函数调用模式 当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用的.对于普通的函数调用来说,函数的返回值就是调用表达式的值 function add(x,y){ return x+y; } var sum = add(3,4); console.log(sum)//7 使用函数调用模式调用函数时,非严格模式下,this被绑定到全局对象:在严格模式下,this是undefined

Javascript 严格模式详解

Javascript 严格模式详解 作者: 阮一峰 日期: 2013年1月14日 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立"严格模式"的目的,主要有以下几个: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全: - 提高编译器效率,增加运行速度

js 四种函数调用模式

看js语言精粹,还在慢慢啃,啃到了一些之前没想到过的就在博客上记录一下吧.号外一下,工作室的汉子有时候太他妈没有节操了!!你们没节操就算了,当着我的面,这都什么鬼(崩溃中),不说这些没用的,进入正题吧. 调用一个函数会暂停当前函数的执行,传递控制权和参数给新函数.那么新函数会有哪些个参数呢,这就涉及到上节闭包里讲到的活动对象了,每个函数除了声明时定义的形参,还有两个this,arguments.this是个灰常重要的参数咯,它的值取决于调用的模式.在js中一共有4中调用模式:方法调用模式,函数调

Javascript原型模式总结梳理

在大多数面向对象语言中,对象总是由类中实例化而来,类和对象的关系就像模具跟模件一样.Javascript中没有类的概念,就算ES6中引入的class也不过是一种语法糖,本质上还是利用原型实现.在原型编程语言中,类并不是必需的,对象不一定需要由类实例化而来,而是通过克隆另外一个对象来得到. 原型模式是用来创建对象的一种模式.在以类为中心的语言中,要创建一个对象首先要指定这个对象的类型,然后实例化一个对象.使用原型模式创建对象时不必关心对象的具体类型,而是找到一个对象,然后通过克隆来创建一个一模一样

JavaScript函数调用规则

1. [代码][JavaScript]代码     JavaScript函数调用规则一 (1)全局函数调用:function makeArray( arg1, arg2 ){    return [this , arg1 , arg2 ];}这是一个最常用的定义函数方式.相信学习JavaScript的人对它的调用并不陌生.调用代码如下:makeArray('one', 'two');// => [ window, 'one', 'two' ] 这种方式可以说是全局的函数调用.为什么说是全局的函数