vue事件中this指向window
<button v-on:click="clickBtn(this)" value="222">click me</button>
...
clickBtn (arg){
alert(arg); // 彈出 [object Window]
}
fn.call(obj, arg1, arg2);
表示:調(diào)用 fn 函數(shù)残黑,將 arg1 和 arg2 傳入函數(shù)荒给,并將函數(shù)內(nèi)的 this 指向 obj魁瞪。
function add(a,b) {
alert(a+b);
}
function sub(a,b) {
alert(a-b);
}
add.call(sub,3,1); // 調(diào)用add函數(shù)济舆,將3和1傳入涩嚣,如果函數(shù)中有this赃梧,將其指向sub函數(shù)固以。
// 結(jié)果 alert(4)
bind 函數(shù)的兼容處理
if (!Function.prototype.bind) {
Function.prototype.bind = function(obj) {
var _self = this
,args = arguments;
return function() {
_self.apply(obj, Array.prototype.slice.call(args, 1));
}
}
}
bind和call的區(qū)別
- bind返回函數(shù)墩虹,call執(zhí)行函數(shù)嘱巾。
- call 是 把第二個(gè)及以后的參數(shù)作為f方法的實(shí)參傳進(jìn)去
而bind 雖說也是獲取第二個(gè)及以后的參數(shù)用于之后方法的執(zhí)行,但是f_Extend中傳入的實(shí)參則是在bind中傳入?yún)?shù)的基礎(chǔ)上往后排的诫钓。
function f(a,b,c){
console.log(a,b,c);
}
f.call(null, 'a'); // a undefined undefined
var f_Extend = f.bind(null,"extend_A");
f_Extend('a'); // extend_A a undefined
立即執(zhí)行函數(shù)中無(wú)法賦值
現(xiàn)象如下旬昭,不知原因
// 使用立即執(zhí)行函數(shù)
(function c () {
console.log(c); // Function c
c = 1000;
console.log(c); // Function c
})();
// 使用普通函數(shù)調(diào)用
function c () {
console.log(c); // Function c
c = 1000;
console.log(c); // 1000
};
c();
生成一個(gè)范圍內(nèi)的隨機(jī)數(shù)
// Getting a random number between 0 and 1, inclusive
function getRandom() {
return Math.random();
}
// Getting a random number between two values
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
// Getting a random integer between two values
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}