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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

哪位大神能幫我看一下,關于js的

哪位大神能幫我看一下,關于js的

qq_小盛開_0 2017-02-02 17:16:33
<script> function foo(){ getName = function(){ console.log(1); }? return this; } ? ?foo.getName= function(){console.log(2)} foo.prototype.getName = function(){ console.log(3); }? var getName = function(){console.log(4)} function getName(){ console.log(5) } foo.getName()/*2*/ ? ? ? ?getName()/*4*/ foo().getName()/*1*/ getName()/*1*/ new foo.getName()/*2*/ new foo().getName()/*3*/ new new foo().getName()/*3*/ </script>把這幾個放到一起,我又懵逼了
查看完整描述

1 回答

已采納
?
按照自己的節奏前行

TA貢獻90條經驗 獲得超70個贊

<script>
<!--首先,你要灌輸對js的思想,在js里面all?is?object,嗯就是什么都是對象-->
function?foo(){?//這一局就是?foo方法
????getName?=?function(){
????console.log(1);
????}?
????return?this;??//返回這個方法?就是返回foo
}
foo.getName=?function(){console.log(2)}?//這里你要把foo.getName看成一個正常的變量,實際上真正命名的時候沒人
????????????????????????????????????????//會這樣寫

foo.prototype.getName?=?function(){???//?prototype?屬性使向對象添加屬性和方法。這里就相當于更改方法了
????console.log(3);
}?
var?getName?=?function(){console.log(4)}?
function?getName(){??
????console.log(5)
}
foo.getName()/*2*/??//結果是2沒毛病
???????getName()/*4*/??//結果是4也沒毛病,你自己定義的就是var?getName
foo().getName()/*1*/?//這個是方法的getName(),沒毛病
getName()/*1*/??//這里就有深究了,和瀏覽器對js的讀取順序有關系,這個地方自己百度,他應該是默認讀取離上次執行
??????????????????//????最近的位置進行讀取
new?foo.getName()/*2*/???//沒毛病?foo.getName你當成一個單詞就行了,"."并不總是代表調用
new?foo().getName()/*3*/???//創建一份方法對象,注意,這里是對象,看下我對?prototype?的解釋你就明白了
new?new?foo().getName()/*3*/?//?你new?n次也沒啥用,只不過是把對象在new一次,即對象的對象
</script>


查看完整回答
3 反對 回復 2017-02-02
  • 1 回答
  • 0 關注
  • 1837 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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