一、this指向構造函數實例化對象
在上篇文章中,我們提到了使用new和不使用new調用構造函數的區別,如下例:
function Benjamin(username, sex) {
this.username = username;
this.sex = sex;
}
var benjamin = new Benjamin("zuojj", "male");
//Outputs: Benjamin{sex: "male",username: "zuojj"}
console.log(benjamin);
var ben = Benjamin("zhangsan", "female");
//Outputs: undefined
console.log(ben);
當構造函數當做普通函數被調用時,并沒有返回值,同時this指向全局對象。那么我們如何來避免因為缺少new關鍵字,而產生的問題呢?
function Benjamin(username, sex) {
//Check whether "this" is a "Benjamin" object
if(this instanceof Benjamin) {
this.username = username;
this.sex = sex;
}else {
return new Benjamin(username, sex);
}
}
var benjamin = new Benjamin("zuojj", "male");
//Outputs: Benjamin{sex: "male",username: "zuojj"}
console.log(benjamin);
var ben = Benjamin("zhangsan", "female");
//Outputs: Benjamin {username: "zhangsan", sex: "female"}
console.log(ben);
在上例中,我們首先檢查this是否是Benjammin的實例,如果不是,使用new自動調用構造函數,并實例化,這意味著,我們不再需要擔心,遺漏new關鍵字實例化構造函數。當然這樣我們可能會養成一個壞的習慣,如果避免這種現象呢?我們可以拋出一個錯誤,像下面這樣:
function Benjamin(username, sex) {
//Check whether "this" is a "Benjamin" object
if(this instanceof Benjamin) {
this.username = username;
this.sex = sex;
}else {
// If not, throw error.
throw new Error("`Benjamin` invoked without `new`");
}
}
二、this指向調用該函數的對象
看下面的例子:
var x = 10;
var obj = {
x: 10,
output: function() {
//Outputs: true
console.log(this === obj);
return this.x;
},
innerobj: {
x: 30,
output: function() {
//Outputs: true
console.log(this === obj.innerobj);
return this.x;
}
}
};
//Outputs: 10
console.log(obj.output());
//Outputs: 30
console.log(obj.innerobj.output());
三、this指向全局對象
在上面討論構造函數的時候我們也討論到不適用new的時候,this會指向全局對象,下面我們來看看兩種常見的容易犯錯的實例:
var x = 100;
var obj = {
x: 10,
output: function() {
(function() {
//Outputs: true
console.log(this === window);
//Outputs: Inner: 100
console.log("Inner:" + this.x);
})();
return this.x;
}
};
//Outputs: 10
console.log(obj.output());
在使用閉包的時候,作用域發生變化,this指向window(瀏覽器中)。
var x = 100;
var obj = {
x: 10,
output: function() {
return this.x;
}
};
var output = obj.output;
//Outputs: 10
console.log(obj.output());
//Outputs: 100
console.log(output());
var obj2 = {
x: 30,
output: obj.output
}
//Outputs: 30
console.log(obj2.output());
此時this始終指向函數調用時的對象。
四、this指向apply/call()方法指派的對象
var x = 100;
var obj = {
x: 10,
output: function() {
return this.x;
}
};
//Outputs: 10
console.log(obj.output());
var obj2 = {
x: 40,
output: obj.output
}
//Outputs: 40
console.log(obj.output.call(obj2));
//Outputs: 10
console.log(obj2.output.apply(obj));
五、callback函數亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区三区在线观看|
亚洲中国色老太|
欧美日韩国产123|
亚洲乱码国产乱码精品精|
萌白酱国产一区二区|
亚洲一区二区三区四区在线播放|
最近2019中文字幕在线高清|
国产精品一二三在线|
在线观看视频99|
国产91精品久久久久久久|
国产精品欧美激情在线播放|
欧洲一区二区视频|
日韩黄色在线免费观看|
91亚洲精品一区二区|
国产精品极品尤物在线观看|
久久久国产精彩视频美女艺术照福利|
欧美亚洲一区在线|
久久亚洲精品中文字幕冲田杏梨|
国产成人极品视频|
国产激情久久久|
亚洲国产一区二区三区在线观看|
欧美视频免费在线观看|
亚洲专区国产精品|
69av视频在线播放|
国产成人综合精品在线|
欧美裸体xxxx极品少妇|
美女性感视频久久久|
97超碰色婷婷|
中文字幕亚洲欧美|
一区二区三区www|
国产精品久久久久7777婷婷|
xvideos成人免费中文版|
国产精品综合不卡av|
亚洲综合色av|
亚洲男女自偷自拍图片另类|
精品偷拍一区二区三区在线看|
国产精品91免费在线|
国产欧美精品在线播放|
精品国产成人av|
青青草国产精品一区二区|
亚洲精品videossex少妇|
国产精品www网站|
日本一区二区在线免费播放|
国产精品美女主播在线观看纯欲|
国产精品色视频|
午夜精品美女自拍福到在线|
国产精品第一视频|
亚洲精品综合久久中文字幕|
亚洲韩国欧洲国产日产av|
日本国产一区二区三区|
亚洲一区亚洲二区|
91精品国产91|
欧美视频专区一二在线观看|
欧美激情精品久久久久久|
国产精品日韩专区|
国产精品一香蕉国产线看观看|
九九热在线精品视频|
欧美专区在线播放|
亚洲精品久久久一区二区三区|
欧美日韩在线免费观看|
欧美天天综合色影久久精品|
亚洲黄色有码视频|
91久久精品国产91久久|
中文字幕一精品亚洲无线一区|
国产精品丝袜高跟|
国产精品久久中文|
丝袜情趣国产精品|
欧美韩国理论所午夜片917电影|
777午夜精品福利在线观看|
久久精品一区中文字幕|
亚洲成人xxx|
91sa在线看|
亚洲精品国产综合久久|
国产精品视频不卡|
中文字幕日韩专区|
日本精品视频网站|
成人97在线观看视频|
亚洲国产日韩一区|
91久久久久久久久久久|
高清日韩电视剧大全免费播放在线观看|
91精品国产色综合|
视频直播国产精品|
日韩成人中文字幕|
欧美成人高清视频|
77777少妇光屁股久久一区|
精品久久久久久久久久|
亚洲第一天堂无码专区|
国产亚洲欧洲高清|
在线日韩日本国产亚洲|
国产精品爽爽爽爽爽爽在线观看|
96国产粉嫩美女|
亚洲国产精品久久久久秋霞蜜臀|
亚洲区一区二区|
久久伊人91精品综合网站|
日韩不卡在线观看|
成人av电影天堂|
日韩成人高清在线|
国产精品一久久香蕉国产线看观看|
久久夜精品va视频免费观看|
欧美色视频日本高清在线观看|
日韩免费观看在线观看|
91九色蝌蚪国产|
中文精品99久久国产香蕉|
亚洲欧美日韩久久久久久|
另类图片亚洲另类|
国产婷婷97碰碰久久人人蜜臀|
国产视频亚洲精品|
亚洲成人在线视频播放|
国产美女久久精品|
国产日韩欧美夫妻视频在线观看|
日韩免费不卡av|
热久久免费视频精品|
亚洲性xxxx|
国产福利精品视频|
91sao在线观看国产|
国产高清视频一区三区|
亚洲国产黄色片|
欧美视频在线看|
久久国产精品久久精品|
久久成人精品电影|
91国内产香蕉|
国产xxx69麻豆国语对白|
国产日韩综合一区二区性色av|
国产精品中文字幕在线观看|
欧美日韩在线影院|
91丝袜美腿美女视频网站|
亚洲国产欧美一区|
91欧美精品午夜性色福利在线|
久久九九热免费视频|
日韩精品免费看|
欧美野外猛男的大粗鳮|
成人亚洲激情网|
日本欧美在线视频|
zzijzzij亚洲日本成熟少妇|
国产精品一区二区三|
国产视频久久久久久久|
国产精品一区电影|
日韩成人在线播放|
欧美成人免费观看|
亚洲最大成人免费视频|
欧美巨大黑人极品精男|
国产丝袜一区视频在线观看|
91精品国产综合久久香蕉最新版|
欧美激情第99页|
亚洲xxxx在线|
欧美日韩亚洲系列|
日韩大片免费观看视频播放|
伦伦影院午夜日韩欧美限制|
成人性生交大片免费看视频直播|
国产自产女人91一区在线观看|
国产成人涩涩涩视频在线观看|
亚洲欧美另类人妖|
成人午夜激情网|
亚洲xxx自由成熟|
自拍偷拍亚洲在线|
日本老师69xxx|
中文在线不卡视频|
国产亚洲欧美日韩精品|
久久精品在线视频|
亚洲美女av黄|
69影院欧美专区视频|
91精品国产高清久久久久久久久|
国产精品香蕉国产|
亚洲肉体裸体xxxx137|