摘要:文章目的是總結下這個事情,如果沒有考慮周全,遺漏某一條,請過路的留言寫,我在補上。類的實例在函數中的一般指向和中括號里面的第一個參數是誰就指向誰。輸出說明指向的是輸出,說明指向的是箭頭函數中的,就是定義是所在的對象,而不是使用時所在的對象
文章目的是總結下這個事情,如果沒有考慮周全,遺漏某一條,請過路的留言寫,我在補上。
在自制行函數中,this --> window
let obj = { name: "fung", getName: ~function(params) { // this-->window console.log(this); //window }() };
給元素的某個事件綁定方法,當事件觸發執行,對應方法的時候,方法中的this一般是指當前操作的元素本身。
let box = document.getElementById("box"); box.onclick = function () { // this -- > box console.log("box", this); //box對象 }
當方法執行時,看方法的前面有沒有點,如果有點,點前面是誰,this就是指向誰;如果沒有點一般都是指向window
var objTest = { name: "fung", getName: function () { console.log("objTest", this); }, timeout: function(params) { setTimeout(function(){ //this --> window console.log("setTimeout", this); }, 1000); } }; objTest.getName(); //this --> objTest let fn = objTest.getName; fn(); // this --> window
在構造函數模式中,方法體中出現的this是當前類的一個實例。
function Person(name, age, sex) { //this --> person(Person類的實例person) this.name = name; this.age = age; this.sex = sex; console.log("Person", this); } let person = new Person("fung", 19, "femail");
在setTimeout函數中的this一般指向window
objTest.timeout();
call和apply中括號里面的第一個參數是誰this就指向誰。
let oldObjec = { name: "oldObjec", age: 1000, getName: function() { console.log("oldObjec getName", this.name); } }; let newObjec = { name: "newObjec", age: 00, getAge: function () { console.log("newObjec getAge", this.age); } }; let name = "window"; oldObjec.getName.call(newObjec); //輸出newObjec,說明this指向的是newObjec newObjec.getAge.call(oldObjec);//輸出1000, 說明this指向的是oldObject
箭頭函數中的this,就是定義是所在的對象,而不是使用時所在的對象
var age = 111; function getName () { setTimeout(() => { console.log("arrowObjec getName", this.age); }, 1000); } getName.call({age: 2000});
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98863.html
總結call,apply,bind方法的理解使用和區別。 call,apply,bind這三個方法在JavaScript中是用來改變函數調用的this指向。那么改變函數this指向有什么用呢?我們先來看一段代碼 var a= { name:harden, fn:function () { console.log(this.name); } } var b =...
摘要:例如通過,調用時強制把它的綁定到上。箭頭函數問題箭頭函數體內的對象就是定義時所在的對象,而不是使用時所在的對象,固定不變。 剛入門javascript,關于this的學習,花了自己挺多的時間,做了比較多的功課,看了一篇又一篇的文章,也看了一些書籍,今天就結合看的那些東西總結下自己所學到的東西,方便留著以后回看,進一步的學習,這篇文章會不斷的更新,不斷的更新自己的想法,現在還是一個入門不...
摘要:普通函數調用函數在全局作用域下運行在非嚴格模式下,指向全局對象,在嚴格模式下,會變成。使用來調用函數,或者說發生構造函數調用時,會自動執行下面的操作。即構造函數的指向它實例化出來的對象。 JavaScript中的this實際上是在函數被調用時發生的綁定,它指向什么完全取決于函數在哪里被調用。 先來列舉一下都有哪些函數調用方式: 普通函數調用 對象方法調用 call()、apply()...
摘要:構造函數模式這種方法創建自定義的構造函數,從而自定義對象類型的屬性和方法。借用構造函數在子類型構造函數的內部調用超類型構造函數,通過和方法來實現。 JavaScript中沒有類的概念,它不是嚴格意義上的面向對象語言,而是基于對象(Object-based)的編程語言。下面是讀《JavaScript高級程序設計(第三版)》的學習筆記,總結一些常用的創建對象和繼承的方法。 一、創建對象 1...
閱讀 2124·2019-08-29 16:53
閱讀 2699·2019-08-29 16:07
閱讀 2042·2019-08-29 13:13
閱讀 3267·2019-08-26 13:57
閱讀 1331·2019-08-26 13:31
閱讀 2433·2019-08-26 13:22
閱讀 1221·2019-08-26 11:43
閱讀 2084·2019-08-23 17:14