摘要:一指針指向全局中的指向的是二指針指向對象在函數中指向的是對象,和全局中的不是同一個對象
一、this指針指向module.exports
console.log("全局中的this指向的是module.exports"); console.log(this); //{} this.obj = "Hello World"; console.log(this.obj); //Hello World console.log(global.obj); //undefined console.log(module.exports.obj); //Hello World console.log("-------------------------------------------------------" + " ");二、this指針指向global對象
console.log("在函數中this指向的是global對象,和全局中的this不是同一個對象"); function fn() { this.obj = "good good study! day day up!"; } fn(); console.log(this);//{ obj: "Hello World" } console.log(this.obj);//Hello World console.log(global.obj);//"good good study! day day up!" console.log("-------------------------------------------------------" + " ");
console.log("在函數中this指向的是global對象,和全局中的this不是同一個對象"); function fn1() { function fn2() { this.msg = "I love you"; } fn2(); console.log(this); //global console.log(this.msg); //"I love you" console.log(global.msg); //"I love you" } fn1(); console.log("-------------------------------------------------------" + " ");三、在構造函數中this指向的是它的實例,而不是global
function Fn3(){ this.year = 1998; } let fn3 = new Fn3(); console.log(this); //{ obj: "Hello World" } console.log(fn3.year); //1998 console.log(global.year); //undefined console.log("-------------------------------------------------------" + " ");四、this指針顯式、隱式傳遞與綁定
console.log("顯式傳遞this"); let Kirito = {}; function person(name, sex, age, addr, salary) { this.name = name; this.sex = sex; this.age = age; this.addr = addr; this.salary = salary; } //這里的傳入Kirito為this指針所指向的對象 //使用.call()進行顯式傳遞 person.call(Kirito, "桐人", "男", 18, "SAO", 999999999); console.log(Kirito); console.log("-------------------------------------------------------" + " ");
console.log("隱式傳遞this"); let Ausua = { name: "亞絲娜", sex: "女", age: 18, addr: "SAO", salary: 999999999, func() { console.log(this); }, func_bind: function () { console.log(this); }.bind("綁定") }; Ausua.func(); console.log("-------------------------------------------------------" + " ");
console.log("強制綁定this指針"); let func = function () { console.log(this); }.bind(Kirito); func(); console.log("-------------------------------------------------------" + " ");
console.log("注意: 這里的func是在原來的對象基礎上,使用bind綁定了this指針,產生了新的函數對象!"); func = function () { console.log(this); }; //注意:func此時綁定對象后,func變量的對象引用指針 指向綁定前 func.bind(Kirito); func(); //注意:func此時綁定對象后,func變量的對象引用指針 指向綁定后 func = func.bind(Kirito); func(); console.log("-------------------------------------------------------" + " ");五、this指針顯式、隱式傳遞與綁定的優先級
let priority = function () { console.log(this); }; console.log("綁定優先于隱式"); Ausua.func_bind(); console.log("-------------------------------------------------------" + " "); console.log("綁定優先于顯式"); priority = priority.bind("綁定"); priority.call("顯式"); priority(); console.log("-------------------------------------------------------" + " "); console.log("顯式優先于隱式"); Ausua.func.call("顯式"); console.log("-------------------------------------------------------" + " "); console.log("結論:優先級:bind>顯示>隱式");
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/101130.html
摘要:問題有朋友問微信小程序文件時,會失敗分析事實上,微信小程序很多模塊都有不兼容現象。。。,被微信小程序初始化時,指針為空,處理避開這類訪問。 問題 有朋友問, 微信小程序require (base64.js)文件時,會失敗,,, 分析 事實上,微信小程序require很多JS模塊都有不兼容現象。。。先從base64.js這個模塊入手吧。調試出錯點: (function(global) ...
摘要:當代碼在一個環境中執行時,會創建變量對象的一個作用域鏈。可以指向不同的運行環境,這里的運行環境本質上指的是對象,可以是內建對象自定義對象或者全局對象。 今天早上看到公眾號推送了阮一峰老師的文章JavaScript 的 this 原理,文章不是很長于是研究了一下。 看完自己的總結如下: this this 指向函數運行時所在的環境。 函數運行在對象內,this 就指向該對象 運行在全局...
摘要:構造器的目的是要創建一個新對象并對其進行設置,然后將其作為構造器的返回值進行返回,是通過函數調用初始化創建新對象。或方法進行調用通過或調用函數,被調用的函數的指向第一個參數指向的。 this ??JavaScript的this總是指向一個對象,而這個對象是基于函數運行時動態綁定的,并非函數聲明時綁定。 函數調用方式 作為對象的方法調用 作為普通函數進行調用 作為構造器進行調用 通過a...
摘要:寫在最前構造函數和原型模式的使用場景很廣泛,但因為對概念的混淆不清導致無法熟練掌握。換句話說,不必在構造函數中定義對象實例的信息,而是可以將這些信息直接添加到原型對象中,比如下面的方法。 寫在最前:構造函數和原型模式的使用場景很廣泛,但因為對概念的混淆不清導致無法熟練掌握。切圖帶你從代碼和流程圖一步步攻克,純干貨,建議收藏詳看,原型模式理解圖非常重要,務必多看幾遍! 前往查看demo源...
摘要:它們有明確的和成員函數的定義,只有的實例才能調用這個的成員函數。用和調用函數里用和來指定函數調用的,即指針的指向。同樣,對于一個后的函數使用或者,也無法改變它的執行,原理和上面是一樣的。 函數里的this指針 要理解call,apply和bind,那得先知道JavaScript里的this指針。JavaScript里任何函數的執行都有一個上下文(context),也就是JavaScri...
閱讀 874·2021-10-25 09:45
閱讀 3298·2021-09-22 14:58
閱讀 3856·2021-08-31 09:43
閱讀 919·2019-08-30 15:55
閱讀 923·2019-08-29 13:51
閱讀 1235·2019-08-29 13:02
閱讀 3490·2019-08-29 12:52
閱讀 1965·2019-08-26 13:27