一,方法调用模式
当一个函数被保存为对象的一个属性时,我们称它为一个方法,此方法被调用时,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);
分享到:
相关推荐
NULL 博文链接:https://zhangxing119.iteye.com/blog/846867
详解JavaScript中的链式调用 链模式 链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是一种非常有用的代码构建技巧。 描述 链式调用在JavaScript语言中很常见,如jQuery、...
1、介绍 先介绍一下函数的调用模式有哪四种: 函数调用模式, 方法调用模式, 构造函数调用模式, 上下文调用模式;...在上述代码中,fn1也就是函数调用模式中的this是指向Window的,而返回值是由return决定。
JavaScript调用时除了声明时定义的形参外,每个函数接受两个附加参数:this 和arguments,this在面向对象编程中非常重要,它取决于调用模式。 JavaScript有四种调用模式,方法调用模式,函数调用模式,构造器调用...
链式调用在JavaScript语言中很常见,如jQuery、Promise等,都是使用的链式调用,当我们在调用同一对象多次其属性或方法的时候,我们需要多次书写对象进行.或()操作,链式调用是一种简化此过程的一种编码方式,使代码...
Javascript 函数的四种调用模式 1 函数模式 最普通的函数调用 // 声明式函数 function fn1 () { console.log(this); } // 函数表达式函数 var fn2 = function() { console.log(this); }; // 调用 函数中this...
主要介绍了JavaScript中调用函数的4种方式代码实例,本文分别给出方法调用模式、函数调用模式、构造器调用模式、apply调用模式4种方式的代码实例,需要的朋友可以参考下
这里所有的调用模式中,最主要的区别在于关键字 this 的意义,下面分别介绍这个几种调用形式。 本文主要内容: 1.分析函数的四种调用形式2.弄清楚函数中this的意义3.明确构造函对象的过程4.学会使用上下文调用函数 ...
我们说一个函数的调用模式是作为一个函数来调用,是要与其它三种调用模式做区分 函数其他的三种调用: 方法调用模式,构造器调用模式,apply/call调用模式。 方法的调用模式: var obj={ fun1: function(){ //...
深入理解JavaScript系列(4):立即调用的函数表达式 深入理解JavaScript系列(5):强大的原型和原型链 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP 深入理解JavaScript系列(7):S.O.L.I.D...
深入理解JavaScript系列(26):设计模式之构造函数模式 深入理解JavaScript系列(27):设计模式之建造者模式 深入理解JavaScript系列(28):设计模式之工厂模式 深入理解JavaScript系列(29):设计模式之装饰...
this的值取决于调用的模式,调用模式:方法,函数,构造器和apply调用模式 this被赋值发生在被调用的时刻。不同的调用模式可以用call方法实现 var myObject = { value: 0, increment: function (inc) { this.value...
《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程技巧、自动化、测试等几方面...