第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么調用一個方法需要用new 關鍵字?

var stock=new getStock("IBM");

正在回答

5 回答

關于你提到的為什么要用new關鍵字這個問題,因為上面的getStock是一個構造函數(shù),所以要用new關鍵字來將構造函數(shù)實例化成一個對象,當然在本視頻中老師這個寫法略有些不規(guī)范,平常開發(fā)中默認構造函數(shù)以大寫字母開頭。

0 回復 有任何疑惑可以回復我~

this.name=name,這個this指向實例化后的對象。this在js里一共有四種指向,作為對象屬性調用時指向對象,作為函數(shù)調用時指向執(zhí)行這個函數(shù)的對象,作為構造函數(shù)調用時指向實例化后的對象,在call和apply中指向自己定義的對象。

0 回復 有任何疑惑可以回復我~

你試試把new去掉后是什么效果。你會發(fā)現(xiàn)為什么去掉后是想要的結果。這里視頻里this.name的this指向的是方法。setInterval里面的this指向的是全局的global,一般是window對象。所以才輸出空。如果將new去掉,都指向的window,前面的this給全局對象的name賦值,后面也就獲得到值了。這里涉及到一些js的基礎也比較底層的知識,可以看一下。

針對代碼,可以這么寫,自己琢磨一下,有new和沒有new的區(qū)別。我把setInterval換成了setTimeout,原理不變:

function?getSocktet(name:?String)?{
????this.name?=?name;
????console.log(this);
????setTimeout(function?()?{
????????console.log(this);
????},1000);
}

var?stock?=?getSocktet("IBM");


1 回復 有任何疑惑可以回復我~

我也沒動,前面明明是一個函數(shù),直接調用就行了,為什么要用實例化類的方法來調用這個函數(shù)呢?

0 回復 有任何疑惑可以回復我~
#1

MIT的夢

看一下我的回答
2017-09-17 回復 有任何疑惑可以回復我~

這里其實是聲明了一個構造函數(shù)(或者說“類”也可以),叫getStock,一般用名詞會好理解一點,這里用了動詞所以會有一些誤解。因為是構造函數(shù),所以前面要加 new,實例化出來一個stock對象,實例化過程中構造函數(shù)被執(zhí)行,setInterval()函數(shù)被調用。這是JS面向對象的基礎知識。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
TypeScript入門
  • 參與學習       59327    人
  • 解答問題       101    個

TypeScript入門視頻教程包括TypeScript的基本概念、常用語法和高級特性

進入課程

為什么調用一個方法需要用new 關鍵字?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號