亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Javascript里this的三種情況

一,作为global对象

var x = 1;

function fun (){

var x =2;

console.log(this.x);

}

fun();//1

二,作为对象方法的调用

函数还可以某个对象的方法调用,这是这个this就指向这个上级对象;

var Obj ={

name:"MGT360124",

age :17,
}

function getName ( ) {

alert(this.name);

}

Obj.getName = getName;

Obj.getName();//"MGT360124"

三,作为构造函数调用

通过构造函数创建的对象实例object,这时这个this就指向这个object;

function Dog () {

this.name = "大黄";

}
var dog  = new Dog();

dog.name;

js中call和apply方法:改变函数运行时的上下文,也就是说改变函数体内部this的指向
js中函数存在: 函数被定义时的上下文, 运行时的上下文,上下文的改变;

//定义一个构造函数constructor
function  Dog () { }

Dog.prototype = {

     name :"大黄",

     color: "yellow",

     say:function () {

       console.log(this.color);
       } 
}

var dogA = new Dog();

dogA.say();//yellow

但是我们在创建一个对象,不像给这个对象添加方法,怎么去公用上面的这个方法?

var dogB = {

 color :"white",

}
dogA.say.call(dogB);//white

dogA.say.apply(dogB);//white

所以可以看出call()和apply()是为了动态改变this而出现的,当一个对象没有这个方法,但是其他的构造函数有这个方法,那么可以借助call()h和apply()用其他对象的方法来操作

call()和apply的区别
他们的作用是相同的,只是传递的参数不一样
call()方法传递的参数必须直接传给函数
apply()接收两个参数:一个参数是在其中运行的作用域,一个是参数数组

var  dog = function (name,color) { 

     this.name=name;

     this.color = color;

     console.log(this.name +" is "+this.color);
}
var  DaHuang = { }

dog.call(DaHuang,"大黄","yellow");//大黄 is yellow

dog.apply( DaHuang, ["2哈","WhiteAndBlack"] );//2哈 is WhiteAndBlack
點擊查看更多內容
5人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消