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

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

更改上下文方法(更改this指向的內容,可方便地實現繼承) call()、apply()

创建call_apply.js文件,代码如下

// 声明一个pet对象
var pet = {
    words: '...',
    // 声明一个speak方法
    speak: function(say){
        console.log(say + ' ' + this.words);
        console.log(this);
    }
}
// 调用pet中的speak方法
pet.speak('Speak');

以上代码执行结果如下:

$ node call_apply.js
Speak ...
{ words: '...', speak: [Function] }
  • 使用call改变上下文方式一

创建call_apply.js文件,使用call 改变上下文,代码如下

// 声明一个pet对象
var pet = {
    words: '...',
    // 声明一个speak方法
    speak: function(say){
        console.log(say + ' ' + this.words);
        console.log(this);
    }
}
// 调用pet中的speak方法
// pet.speak('Speak');

// 声明一个dog对象
var dog = {
    words: 'Wang'
}
// 将pet.speak的this指向了dog,改变了执行上下文
pet.speak.call(dog,'Speak');

以上代码执行结果如下:

$ node call_apply.js
Speak Wang
{ words: 'Wang' }
  • 使用call改变上下文方式二

创建call_apply_extend.js文件,使用call 改变上下文,代码如下

// 声明一个pet函数
function Pet(words){
    // 将words赋值给this.words属性
    this.words = words;
    // 声明一个speak方法
    this.speak = function(){
        // 调用this中的this.words
        console.log(this.words);
        console.log('Pet:' , this);
    }
}

// 声明一个Dog方法
function Dog(words){
    // 将Pet的this指向了Dog
    // Dog中并没有speak方法,通过call方法将Pet中speak方法指向了Dog中,使Dog也能够调用speak方法
    Pet.call(this,words);
    console.log('Dog:' , this);
    // Pet.apply(this,arguments);
}
// 创建一个实例对象
var dog = new Dog('Wang');
// 调用speak方法
dog.speak();

以上代码执行结果如下:

$ node call_apply_extend.js
Dog: Dog { words: 'Wang', speak: [Function] }
Wang
Pet: Dog { words: 'Wang', speak: [Function] }
點擊查看更多內容
TA 點贊

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

評論

作者其他優質文章

正在加載中
PHP開發工程師
手記
粉絲
5
獲贊與收藏
130

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

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

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

幫助反饋 APP下載

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

公眾號

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

舉報

0/150
提交
取消