call方法详细介绍,函数的用法表明

日期:2019-09-13编辑作者:最快开奖计算机

call 方法
请参阅
应用于:Function 对象
要求
版本 5.5
调用三个目标的四个办法,以另三个对象替换当前目的。

call 方法
请参阅
应用于:Function 对象
要求
版本 5.5
调用三个对象的多个方法,以另三个指标替换当前目的。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被作为当前指标的指标。
arg1, arg2, , argN
可选项。将被传送格局参数系列。
说明
call 方法能够用来顶替另三个对象调用一个方法。call 方法可将三个函数的指标上下文从起头的上下文字改良变为由 thisObj 钦定的新对象。

call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被当做当前目的的对象。
arg1, arg2, , argN
可选项。将被传送情势参数连串。
说明
call 方法能够用来代替另三个目的调用多个办法。call 方法可将三个函数的靶子上下文从先导的上下文字改善变为由 thisObj 钦定的新对象。

只要未有提供 thisObj 参数,那么 Global 对象被视作 thisObj。

乍一看,很轻便把人看迷胡,先做一些简单易行的印证
obj1.method1.call(obj2,argument1,argument2)
如上,call的机能便是把obj1的秘籍放到obj2上使用,后边的argument1..那一个做为参数字传送入.
举三个具体的例子

复制代码 代码如下:

function add(a,b)
{
alert(a+b);
}
function sub(a,b)
{
alert(a-b);
}
add.call(sub,3,1);

以那一件事例中的意思正是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运营结果为:alert(4); // 注意:js 中的函数其实是目的,函数名是对 Function 对象的引用。

看一个有些复杂一点的例证

复制代码 代码如下:

function Class1()
{
this.name = "class1";
this.showNam = function()
{
alert(this.name);
}
}
function Class2()
{
this.name = "class2";
}
var c1 = new Class1();
var c2 = new Class2();
c1.showNam.call(c2);

注意,call 的情致是把 c1 的不二等秘书技放到c2上推行,原本c2是不曾showNam() 方法,以后是把c1 的showNam()方法放到 c2 上来实践,所以this.name 应该是 class2,推行的结果正是 :alert("class2");
怎么,感到有趣儿了吧,能够让a对象来试行b对象的艺术,那是java工程师所不敢想的。还会有更加有趣的,能够用 call 来完结三番五次

复制代码 代码如下:

function Class1()
{
this.showTxt = function(txt)
{
alert(txt);
}
}
function Class2()
{
Class1.call(this);
}
var c2 = new Class2();
c2.showTxt("cc");

这么 Class2 就承袭Class1了,Class1.call(this) 的 意思正是利用 Class1 对象代替this对象,那么 Class2 中不就有Class1 的装有属性和艺术了吧,c2 对象就可见一贯调用Class1 的不二秘诀以及性能了,实践结果正是:alert(“cc”);
对的,就是这么,那正是 javaScript 怎么样来效仿面向对象中的继承的,还是可以够达成多种继承。

复制代码 代码如下:

function Class10()
{
this.showSub = function(a,b)
{
alert(a-b);
}
}
function Class11()
{
this.showAdd = function(a,b)
{
alert(a+b);
}
}

function Class2()
{
Class10.call(this);
Class11.call(this);
}

很粗大略,使用八个 call 就实现多重传承了
道理当然是那样的,js的接续还会有别的艺术,比如使用原型链,那一个不属于本文的层面,只是在此证实call 的用法
说了call ,当然还大概有 apply,这七个法子多数是八个意味
差别在于 call 的第一个参数能够是私自等级次序,而apply的第叁个参数必得是数组,也得以是arguments
再有 callee,caller,这么些和call的 用法就分化了,放到下一次讲吧 ,呵呵。

方法 请参阅 应用于:Function 对象 须求 版本 5.5 调用贰个目的的贰个办法,以另贰个指标替换当前目的。 call([thisObj[,arg1[, arg2[, [,.argN]...

一旦未有提供 thisObj 参数,那么 Global 对象被作为 thisObj。


乍一看,很轻易把人看迷胡,先做一些差不离的求证
obj1.method1.call(obj2,argument1,argument2)
如上,call的作用正是把obj1的主意放到obj2上使用,后边的argument1..那几个做为参数字传送入.

举三个切实可行的例证

复制代码 代码如下:

function add(a,b)
{
    alert(a+b);
}
function sub(a,b)
{
    alert(a-b);
}

add.call(sub,3,1);

这么些事例中的意思正是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运转结果为:alert(4); // 注意:js 中的函数其实是指标,函数名是对 Function 对象的引用。

看一个不怎么复杂一点的事例

复制代码 代码如下:

function Class1()
{
    this.name = "class1";

    this.showNam = function()
    {
        alert(this.name);
    }
}

function Class2()
{
    this.name = "class2";
}

var c1 = new Class1();
var c2 = new Class2();

c1.showNam.call(c2);

小心,call 的意趣是把 c1 的必由之路放到c2上举办,原本c2是尚未showNam() 方法,未来是把c1 的showNam()方法放到 c2 上来举行,所以this.name 应该是 class2,实行的结果便是 :alert("class2");

怎么样,认为风趣了吗,能够让a对象来实行b对象的措施,那是java程序猿所不敢想的。还会有更加风趣的,能够用 call 来促成持续

复制代码 代码如下:

function Class1()
{
    this.showTxt = function(txt)
    {
        alert(txt);
    }
}

function Class2()
{
    Class1.call(this);
}

var c2 = new Class2();

c2.showTxt("cc");

像这种类型 Class2 就承袭Class1了,Class1.call(this) 的 意思正是采纳 Class1 对象替代this对象,那么 Class2 中不就有Class1 的具备属性和办法了呢,c2 对象就可见直接调用Class1 的不二秘籍以及质量了,施行结果便是:alert(“cc”);

对的,正是那般,那正是 javaScript 如何来效仿面向对象中的承接的,还足以兑现多重承继。

复制代码 代码如下:

function Class10()
{
    this.showSub = function(a,b)
    {
        alert(a-b);
    }
}

function Class11()
{
    this.showAdd = function(a,b)
    {
        alert(a+b);
    }
}

function Class2()
{
    Class10.call(this);
    Class11.call(this);
}

比极粗略,使用多少个 call 就贯彻多种承继了
自然,js的三番五次还或者有其他办法,比方使用原型链,那么些不属于本文的范畴,只是在此表明call 的用法
说了call ,当然还应该有 apply,那五个形式许多是一个情趣
分别在于 call 的第二个参数能够是随意档案的次序,而apply的第贰个参数必需是数组

本文由今晚最快开奖现场直播发布于最快开奖计算机,转载请注明出处:call方法详细介绍,函数的用法表明

关键词:

去掉字符串中的空格,如何用javascript去掉字符串

1. 去掉字符串两端的空格   那些近乎只好去掉2头的空格 String.prototype.trim=function (){returnthis.replace(/(^/s*)|(/s*$)/g,'');} 复...

详细>>