澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

onblur调用函数失效问题记录,JavaScript中5种调用函

来源:http://www.bhtsgq.com 作者:计算机知识 人气:169 发布时间:2019-05-24
摘要:在管理页面上一个失焦效果时遇上了  xxxx is not a function那样的错误,但函数确实有定义成功 ,经过测试发掘是 id值与函数名同样导致的标题,不过爆发的案由并未有找到详细的疏解,

在管理页面上一个失焦效果时遇上了  xxxx is not a function 那样的错误,但函数确实有定义成功 ,经过测试发掘是 id 值与函数名同样导致的标题,不过爆发的案由并未有找到详细的疏解,假如有打探的大佬希望得以在评价中留言告知。

JavaScript中各种调用函数的艺术,javascript各个

这篇小说详细的介绍了Javascript中各类函数调用的主意及其规律,对于了然JavaScript的函数有一点都不小的支援!

JavaScript,调用函数的5种办法

一回又一回的,作者意识,那个有bug的Javascript代码是由于没有当真领悟Javascript函数是何许做事而导致的(顺便说一下,大多那么的代码是自家写的).JavaScript具备函数式编制程序的风味, 当大家选择直面它的时候,那将产生我们发展的阻碍.

用作初学者,大家来测试五种函数调用的方法,从外表来看大家会认为那五个函数与C#中等高校函授数的成效十二分相似,不过我们说话方可看来仍然有特别首要的两样的地点的,忽视这一个出入无疑会促成难于跟踪的bug。首先让我们创设贰个简单的函数,那个函数将要就要下文中央银行使,那个函数仅仅重返当前的this的值和五个提供的参数.

复制代码 代码如下:
<script type="text/javascript">
function makeArray(arg1, arg2){
    return [ this, arg1, arg2 ];
}
</script>

最常用的秘诀,但不幸的,全局的函数调用
当大家上学Javascript时,大家领会到哪边用地点示例中的语法来定义函数。
,大家也领略调用这些函数极其的简便,大家供给做的唯有是:
复制代码 代码如下:
makeArray('one', 'two');
// => [ window, 'one', 'two' ]
 
Wait a minute. What's that window
 
 
alert( typeof window.methodThatDoesntExist );
// => undefined
alert( typeof window.makeArray);
// =>
 
 
window.makeArray('one', 'two');
// => [ window, 'one', 'two' ]

自家说最常见的调用方法是不幸的是因为它导致大家注解的函数暗许是大局的.大家都明白全局成员不是编制程序的极品实施.那在JavaScript里是特地的正确,在JavaScript中制止采用全局的积极分子,你是不会为之后悔的.

JavaScript函数调用规则壹 onblur调用函数失效问题记录,JavaScript中5种调用函数的方法。在尚未通过显明全体者对象而直白调用的函数中,如myFunction(),将促成this的值成为暗中认可对象(浏览器中的窗口)。

函数调用

让我们后天创办3个简便的指标,使用 makeArray函数作为它的三个方式,大家将动用json的秘籍来声称二个指标,大家也来调用那么些方法
复制代码 代码如下:
//creating the object
var arrayMaker = {
    someProperty: 'some value here',
    make: makeArray
};
 
//invoke the make() method
arrayMaker.make('one', 'two');
// => [ arrayMaker, 'one', 'two' ]
// alternative syntax, using square brackets
arrayMaker['make']('one', 'two');
// => [ arrayMaker, 'one', 'two' ]

看样子此间的比不上了吧,this的值产生了目的本人.你恐怕会疑窦原始的函数定义并不曾改造,为什么它不是window了呢.好吧,那就是函数在JSavacript中传送的秘技,函数在JavaScript里是1个正规的数据类型,确切的身为一个对象.你能够传递它们依然复制他们.就类似整个函数连带参数列表和函数体都被复制,且被分配给了 arrayMaker里的品质make,那就象是这样定义一个 arrayMaker:
复制代码 代码如下:
var arrayMaker = {
    someProperty: 'some value here',
    make: function (arg1, arg2) {
        return [ this, arg1, arg2 ];
    }
};

JavaScript函数调用规则二

在二个选择格局调用语法,像 obj.myFunction()可能obj['myFunction'](),这时this的值为obj

这是事件管理代码中bug的首要源头,看看这一个事例
复制代码 代码如下:
<input type="button" value="Button 1" id="btn1"  />
<input type="button" value="Button 2" id="btn2"  />
<input type="button" value="Button 3" id="btn3"  onclick="buttonClicked();"/>
 
<script type="text/javascript">
function buttonClicked(){
    var text = (this === window) ? 'window' : this.id;
    alert( text );
}
var button1 = document.getElementById('btn1');
var button2 = document.getElementById('btn2');
 
button1.onclick = buttonClicked;
button2.onclick = function(){   buttonClicked();   };
</script>

点击第1个按键将会呈现”btn”因为它是一个措施调用,this为所属的指标(按键成分) 点击第3个开关将展现”window”因为 buttonClicked是被间接调用的(不像 obj.buttonClicked().) 那和我们第三个按键,将事件管理函数直接放在标签里是一样的.所以点击第多少个开关的结果是和第四个一律的.
行使像jQuery的JS库有这么的长处,当在jQuery里定义了一个事件管理函数,JS库会援助重写this的值以确定保障它涵盖了现阶段风浪源成分的引用,
复制代码 代码如下:
//使用jQuery
$('#btn1').click( function() {
    alert( this.id ); // jQuery ensures 'this' will be the button
});

jQuery是怎么重载this的值的吧?继续读书

其它多个:apply()和call()

您越来越多的使用JavaScript的函数,你就更加多的意识你必要传递函数并在不相同的前后文里调用他们,就像是Qjuery在事件管理函数里所做的平等,你往往平时索要重新设置this的值.记住自个儿告诉您的,在Javascript中等高校函授数也是指标,函数对象涵盖部分预约义的方式,其中有四个就是apply()和call(),我们得以采取它们来对this进行重新载入参数.
复制代码 代码如下:
var gasGuzzler = { year: 2008, model: 'Dodge Bailout' };
makeArray.apply( gasGuzzler, [ 'one', 'two' ] );
// => [ gasGuzzler, 'one' , 'two' ]
makeArray.call( gasGuzzler,  'one', 'two' );
// => [ gasGuzzler, 'one' , 'two' ]

那三个章程是一般的,区别的是后边的参数的例外,Function.apply()是选用三个数组来传递给函数的,而Function.call()是将那几个参数独立传递的,在奉行中你会意识apply()在大部处境下更方便.

JSavacript函数调用规则三

若是大家想在不复制函数到3个艺术而想重载this的值的时候,我们能够运用 myFunction.apply( obj ) 或 myFunction.call( obj ).

构造器

自身不想深切研讨在Javascript中项指标定义,可是在此时我们供给驾驭在Javascript中绝非类,而且别的3个自定义的种类必要三个开始化函数,使用原型对象(作为起先化函数的三天质量)定义你的门类也是四个不易的主义,让大家来创制一个简便的品种
复制代码 代码如下:
//声可瑞康个构造器
function ArrayMaker(arg1, arg2) {
    this.someProperty = 'whatever';
    this.theArray = [ this, arg1, arg2 ];
}
// 申明实例化方法
ArrayMaker.prototype = {
    someMethod: function () {
        alert( 'someMethod called');
    },
    getArray: function () {
        return this.theArray;
    }
};
 
var am = new ArrayMaker( 'one', 'two' );
var other = new ArrayMaker( 'first', 'second' );
 
am.getArray();
// => [ am, 'one' , 'two' ]

四个非凡主要并值得注意的是出新在函数调用前边的new运算符,没有特别,你的函数就好像全局函数一样,且大家创设的这么些属性都将是开创在全局对象上(window),而你并不想那么,另二个话题是,因为在你的构造器里未有再次来到值,所以壹旦你忘记行使new运算符,将形成您的部分变量被赋值为 undefined.因为这几个缘故,构造器函数以大写字母早先是三个好的习于旧贯,那足以看成二个提示,令你在调用的时候绝不忘记后面包车型地铁new运算符.

带着那样的小心,早先化函数里的代码和您在任何语言里写的开头化函数是相似的.this的值将是你将创设的对象.

Javascript函数调用规则四

当您将函数用作初始化函数的时候,像MyFunction(),Javascript的运维时将把this的值钦点为新建的对象.

本人梦想知道各样函数调用格局的不一致会使您的Sjavacript代码远远地离开bugs,有个别那样的bug会确定保证您总是知道this的值是幸免他们首先步。

那篇小说详细的介绍了Javascript中各类函数调用的法子及其规律,对于精晓JavaScript的函数有十分的大的...

现实地衡量试代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            function test(){
                alert("dsds");
            }
        </script>
    </head>
    <body>
        <form action="" method="post" onsubmit="return false">
            <input type="text" id="test" onblur="test()" />

        </form>
    </body>
</html>

那时触发失焦事件时会出现 test is not a function的荒谬

本文由澳门新葡亰发布于计算机知识,转载请注明出处:onblur调用函数失效问题记录,JavaScript中5种调用函

关键词:

上一篇:新蒲京在线:Server学习之路,增删改查

下一篇:没有了

最火资讯