`
ydwcn
  • 浏览: 63835 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript中的调用模式

阅读更多

一,方法调用模式

 当一个函数被保存为对象的一个属性时,我们称它为一个方法,此方法被调用时,this被绑定到该对象。 如果一个调用表达式包含一个属性存取表达式(即一个.点表达式或[subscript]下标表达式),那么它被当作一个方法来调用。

//创建myObject, 它有一个value属性和一个increment方法
//increment方法接受一个可选参数,如果参数不是数字,默认使用数字1
var myObject = {
     value : 0;
     increment : function (inc) {
          this.value += typeof inc === 'number' ? inc : 1;
     }
};

myObject.incement();
document.writeln(myObject.value);  //1
myObject.incement(2);
document.writeln(myObject.value);  //3

 

方法可以使用this去访问对象,所以它能从对象中取值或修改该对象。this到对象的绑定发生在调用的时侯。这个"超级"迟绑定(very late binding)使得函数可以对this高度复用。通过this可以得到它们所属对象的上下文的方法称为 公共方法。

 

二,函数调用模式

当一个函数并非一个对象的属性时,那么它被当作一个函数来调用。

var sum = add(3,4); //sum 的值为7

 当函数以此模式调用时,this被绑定到全局对象,这是语言设计上的错误。倘若语言设计正确,当内部函数被调用时,this应该仍绑定到外部函数的this 变量。这个设计错误的后果是方法不能通过内部函数来帮助它工作。因为内部函数的this被绑定了错误的值,所以不能共享该方法对对象的访问权。解决方案: 如果该方法定义一个变量并给它赋值为this.那么内部函数就可以能过那个变量访问到this.

//给myObject增加一个double方法
myObject.double = function() {
     var that = this;   //解决方法

     var helper = function() {
            that.value = add(that.value, that.value);
     };
      helper ();   //以函数形式调用helper
};


//以方法形式调用double

myObject.double();
document.writeln(myObject.value);   //6

 

三,构造器调用模式

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

//创建一个Quo的构造器函数。它构造一个带有status属性的对象。

var Quo = function(string) {
      this.status = string;
};

//给Quo的所有实例提供一个名为getStatus的公共方法。
Quo.prototype.getStatus = function() {
     return this.status;
};

//构造一个Quo实例
var myQuo = new Quo("ydwcn");
document.writeln(myQuo .getStatus); 

 

分享到:
评论

相关推荐

    JavaScript中函数对象调用模式总结

    NULL 博文链接:https://zhangxing119.iteye.com/blog/846867

    【JavaScript源代码】详解JavaScript中的链式调用.docx

    详解JavaScript中的链式调用  链模式 链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是一种非常有用的代码构建技巧。 描述 链式调用在JavaScript语言中很常见,如jQuery、...

    javascript函数的四种调用模式

    1、介绍 先介绍一下函数的调用模式有哪四种: 函数调用模式, 方法调用模式, 构造函数调用模式, 上下文调用模式;...在上述代码中,fn1也就是函数调用模式中的this是指向Window的,而返回值是由return决定。

    JavaScript四种调用模式和this示例介绍

    JavaScript调用时除了声明时定义的形参外,每个函数接受两个附加参数:this 和arguments,this在面向对象编程中非常重要,它取决于调用模式。 JavaScript有四种调用模式,方法调用模式,函数调用模式,构造器调用...

    详解JavaScript中的链式调用

    链式调用在JavaScript语言中很常见,如jQuery、Promise等,都是使用的链式调用,当我们在调用同一对象多次其属性或方法的时候,我们需要多次书写对象进行.或()操作,链式调用是一种简化此过程的一种编码方式,使代码...

    Javascript 函数的四种调用模式

    Javascript 函数的四种调用模式 1 函数模式  最普通的函数调用 // 声明式函数 function fn1 () { console.log(this); } // 函数表达式函数 var fn2 = function() { console.log(this); }; // 调用 函数中this...

    JavaScript中调用函数的4种方式代码实例

    主要介绍了JavaScript中调用函数的4种方式代码实例,本文分别给出方法调用模式、函数调用模式、构造器调用模式、apply调用模式4种方式的代码实例,需要的朋友可以参考下

    JavaScript函数的4种调用方法详解

    这里所有的调用模式中,最主要的区别在于关键字 this 的意义,下面分别介绍这个几种调用形式。 本文主要内容: 1.分析函数的四种调用形式2.弄清楚函数中this的意义3.明确构造函对象的过程4.学会使用上下文调用函数 ...

    浅析JavaScript函数的调用模式

    我们说一个函数的调用模式是作为一个函数来调用,是要与其它三种调用模式做区分 函数其他的三种调用: 方法调用模式,构造器调用模式,apply/call调用模式。  方法的调用模式:  var obj={ fun1: function(){ //...

    深入理解JavaScript系列

    深入理解JavaScript系列(4):立即调用的函数表达式 深入理解JavaScript系列(5):强大的原型和原型链 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP 深入理解JavaScript系列(7):S.O.L.I.D...

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(26):设计模式之构造函数模式 深入理解JavaScript系列(27):设计模式之建造者模式 深入理解JavaScript系列(28):设计模式之工厂模式 深入理解JavaScript系列(29):设计模式之装饰...

    JavaScript调用模式与this关键字绑定的关系

    this的值取决于调用的模式,调用模式:方法,函数,构造器和apply调用模式 this被赋值发生在被调用的时刻。不同的调用模式可以用call方法实现 var myObject = { value: 0, increment: function (inc) { this.value...

    编写可维护的JavaScript(中文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...

Global site tag (gtag.js) - Google Analytics