摘要:相信很多剛剛學(xué)習(xí)的新手都會(huì)有同感,當(dāng)看一段代碼時(shí),發(fā)現(xiàn)里面有很多,但是這些到底是指向哪里卻沒(méi)有那么清楚,為了搞清楚這些到底是什么情況,特地花點(diǎn)時(shí)間總結(jié)如下幾點(diǎn)最普遍的表示全局對(duì)象表示全局對(duì)象輸出為解析設(shè)置全局變量初始值為,當(dāng)調(diào)用函數(shù)之后改變
相信很多剛剛學(xué)習(xí)js的新手都會(huì)有同感,當(dāng)看一段js代碼時(shí),發(fā)現(xiàn)里面有很多this,但是這些this到底是指向哪里卻沒(méi)有那么清楚,為了搞清楚這些this到底是什么情況,特地花點(diǎn)時(shí)間總結(jié)如下幾點(diǎn):
1.最普遍的this表示全局對(duì)象
// 1.this表示全局對(duì)象 var x = 1 function test1(){ this.x = 2; console.log(this.x); } test1();//輸出為2
解析:設(shè)置全局變量x初始值為1,當(dāng)調(diào)用函數(shù)test1()之后改變?nèi)肿兞縳的初始化值,故為2
2.對(duì)象方法中的this(這里this就指這個(gè)上級(jí)對(duì)象)
例1:
var name = "全局this"; var object = { name : "對(duì)象中this", getNameFunc : function(){ return function(){ return this.name; }; } }; console.log(object.getNameFunc()());//輸出:全局this
例2:
var name = "全局this"; var object = { name : "對(duì)象中this", getNameFunc : function(){ var that = this; return function(){ return that.name; }; } }; console.log(object.getNameFunc()());//輸出:對(duì)象中this
例3
var name = "全局this"; var object = { name : "對(duì)象中this", getNameFunc : function(){ var that = this; return function(){ return that.name+","+this.name; }; } }; console.log(object.getNameFunc()());//輸出:對(duì)象中this,全局this
例4
function test2(){ console.log(this.y); } var obj = {}; obj.y = 2; obj.func= test2; obj.func();//輸出2
解析:在例1中,直接this調(diào)用全局,而在例2中this表示函數(shù)的上一級(jí)對(duì)象,故此時(shí)的this是對(duì)象object;在例4中test2函數(shù)被賦值給對(duì)象obj,所以此時(shí)的this表示對(duì)象obj
3.構(gòu)造函數(shù)調(diào)用(實(shí)際上也可以理解成是一個(gè)對(duì)象,跟2中一樣)
var a = 1; function test3(){ this.a = 2; } var gz = new test3(); console.log(a);//輸出1 console.log(this.a);//輸出1 console.log(gz.a);//輸出2
解析:當(dāng)new test3()弄成一個(gè)新的對(duì)象的時(shí)候,test3里面的this指向的是gz,所有全局變量沒(méi)有變化
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84519.html
摘要:同時(shí)給該構(gòu)造函數(shù)自動(dòng)添加一個(gè)屬性,該屬性為指針,指向原型對(duì)象??偨Y(jié)構(gòu)造函數(shù)中的屬性和方法僅為聲明和定義,一旦實(shí)例化工作完成后。實(shí)例對(duì)象自身的屬性和方法與構(gòu)造函數(shù)將不在存在關(guān)聯(lián)關(guān)系。 構(gòu)造函數(shù):函數(shù)中的一種,通過(guò)關(guān)鍵字new可以創(chuàng)建其實(shí)例。為了便于區(qū)分,通常首字母大寫(xiě);原型對(duì)象:一種特殊的對(duì)象,構(gòu)造函數(shù)創(chuàng)建時(shí)即自動(dòng)生成;與構(gòu)造函數(shù)形成一一對(duì)應(yīng),如同人和影子般的關(guān)系;實(shí)例:通過(guò)構(gòu)造函數(shù)實(shí)例...
摘要:還有一個(gè)問(wèn)題,就是不能在創(chuàng)建子類性時(shí),像父類型的構(gòu)造函數(shù)傳遞參數(shù)。組合繼承將原型鏈和借用構(gòu)造函數(shù)組合到一起,發(fā)揮兩者之長(zhǎng)的一張繼承模式,下面來(lái)看個(gè)例子。組合繼承最大的問(wèn)題是無(wú)論在什么情況下,都會(huì)調(diào)用兩次父類型構(gòu)造函數(shù)。 繼承 繼承是面向?qū)ο笳Z(yǔ)言中特別重要的概念,js的繼承主要是靠原型鏈實(shí)現(xiàn)的。 原型鏈?。?! 看到我給標(biāo)題打了三個(gè)嘆號(hào)嗎,這里真的很重要!這里真的很重要!這里真的很重要!j...
摘要:什么是函數(shù)引用的原話函數(shù)是一組可以隨時(shí)隨地運(yùn)行的語(yǔ)句。函數(shù)是由這樣的方式進(jìn)行聲明的關(guān)鍵字函數(shù)名一組參數(shù),以及置于括號(hào)中的待執(zhí)行代碼。 什么是函數(shù)? 引用 W3School 的原話: 函數(shù)是一組可以隨時(shí)隨地運(yùn)行的語(yǔ)句。 函數(shù)是 ECMAScript 的核心。 函數(shù)是由這樣的方式進(jìn)行聲明的:關(guān)鍵字 function、函數(shù)名、一組參數(shù),以及置于括號(hào)中的待執(zhí)行代碼。 函數(shù)的基本語(yǔ)法是這樣的:...
摘要:并且接收的參數(shù)的限制是兩種類型。對(duì)于這兩種類型有不同的處理。之后給這個(gè)插件添加至已經(jīng)添加過(guò)的插件數(shù)組中,標(biāo)示已經(jīng)注冊(cè)過(guò)最后返回對(duì)象。還有一種則是將所有邏輯都編寫(xiě)成一個(gè)函數(shù)暴露給。個(gè)人覺(jué)得第一種方式比較合理。 先舉個(gè)? 我們先來(lái)看一個(gè)簡(jiǎn)單的事例首先我使用官方腳手架新建一個(gè)項(xiàng)目vue init webpack vue-demo然后我創(chuàng)建兩個(gè)文件index.js plugins.js.我將這...
摘要:介紹方法接收一個(gè)函數(shù)作為累加器為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù)初始值上一次回調(diào)的返回值,當(dāng)前元素值,當(dāng)前索引,原數(shù)組。 介紹reduce reduce() 方法接收一個(gè)函數(shù)作為累加器,reduce 為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù):初始值(上一次回調(diào)的返回值),當(dāng)前元素值,當(dāng)...
閱讀 1807·2023-04-26 00:47
閱讀 1558·2021-11-11 16:55
閱讀 2633·2021-09-27 14:04
閱讀 3562·2021-09-22 15:58
閱讀 3564·2021-07-26 23:38
閱讀 2143·2019-08-30 13:47
閱讀 1994·2019-08-30 13:15
閱讀 1159·2019-08-29 17:09