js中的物件平時用的很少,因為要學習ts和es6,發現物件裡面的內容需要學習的東西真的很多,這裡記錄看書過程中與練習物件的一些方法,方便以後回看。
先看題目
1本人的解題思路,改變上下文肯定是作用域的問題,看了題目。又開始不確定了。function
altercontext(fn, obj) 45
傳入67 altercontext(function() , )89
10要求返回
1112 rebecca yo
意思是,我輸入乙個函式,裡面的this.greeting和this.name要和後面輸入的物件一一對應上。這樣返回的結果才對。
書上看的是:
functionperson(name, age)
//定義乙個物件
var you = new person("you", 24);
console.log(you.name);
//返回 you
console.log(you.age);
//返回 24
看著兩個引數
fn:他是函式
obj:物件
fn的this如果能改變,指向物件裡面的值就行了,
於是我改變了寫法
function altercontext(fn, obj)完成之後,我忍不住看了別人的答案。。。。altercontext(function() ,})
//返回 rebecca,yo
成功!
fn.call(obj,null)
bind() 函式會建立乙個新函式(稱為繫結函式),新函式與被調函式(繫結函式的目標函式)具有相同的函式體(在 ecmascript 5 規範中內建的看的我一臉懵逼。call
屬性)。當新函式被呼叫時 this 值繫結到 bind() 的第乙個引數,該引數不能被重寫。繫結函式被呼叫時,bind() 也接受預設的引數提供給原函式。乙個繫結函式也能使用new
操作符建立物件:這種行為就像把原函式當成構造器。提供的 this 值被忽略,同時呼叫時的引數被提供給模擬函式。我個人的理解是:用了這個函式,那麼新函式與原來的函式的this指向都是相同的。如果你是new 操作符建立的物件,那麼這個函式就是無效的。
最終**
return
fn.bind(obj)
發現返回了該函式,也就是說,沒有執行。。。。
修改後:
return
fn.bind(obj)()
這樣就可以了。
總結:能看懂的也就這4中方法,還有好幾種在原型上做操作的,不懂這一方面,也就不亂說了。
上下文物件
ps 好久沒更新了,我把知識點都寫在了文件上,別急以後可能一天會更新好多條,哈哈哈 一 上下文概念 每乙個web project,執行時都部署在tomcat下,稱為乙個應用。部署後,啟動tomcat時,tomcat將為每乙個應用建立乙個物件,這個物件稱之為上下文物件。乙個應用有且只有乙個上下文物件,...
js的上下文
1,指向函式擁有者 2,只能在函式內部使用 1,物件宣告 this指向物件 var pet pet.speak 執行結果 true2,函式宣告 this指向global 或window function pet words pet 執行結果 true3,建構函式宣告 this指向新宣告的物件 fun...
JS執行上下文
執行上下文,即context,也不知道是誰翻譯的,不少的文獻 書籍用的都是這個詞。還記得第一次接觸這個詞時的惆悵 迷惘 不知所措,扶了扶眼鏡,翻開大辭典,還是翻譯成環境比較接地氣。js執行上下文,即js的執行環境。當我們的 執行時,會進入到不同的執行上下文,即不同的環境。在不同的環境中,有著不同的 ...