国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript中判斷函數(shù)是new還是()調(diào)用的區(qū)別說明

2019-11-20 23:51:58
字體:
供稿:網(wǎng)友
方式1
復制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof Person){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // --> new調(diào)用
Person(); // --> 函數(shù)調(diào)用

方式2
復制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof arguments.callee){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // --> new調(diào)用
Person(); // --> 函數(shù)調(diào)用

方式3
復制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // --> new調(diào)用
Person(); // --> 函數(shù)調(diào)用

看似很完美,但當把函數(shù)/類作為自身實例對象的方法時調(diào)用就出問題了
復制代碼 代碼如下:

function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new調(diào)用');
}else{
alert('函數(shù)調(diào)用');
}
}
var p = new Person('jack',30); // 先new一個對象
p.fn = Person; // 把函數(shù)/類 Person 賦值給自身對象p的fn屬性
p.fn(); // 這句調(diào)用時提示“這是new調(diào)用”,顯然不對

還有更好的方法嗎?
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 玛沁县| 延边| 伊吾县| 精河县| 苗栗市| 喀什市| 咸丰县| 通道| 鄢陵县| 阿尔山市| 福泉市| 安丘市| 宜都市| 镶黄旗| 彰武县| 临西县| 琼结县| 建瓯市| 崇文区| 开平市| 迁西县| 肥城市| 叙永县| 修文县| 嘉义市| 朝阳区| 陕西省| 米易县| 绵阳市| 安福县| 左贡县| 武宣县| 定陶县| 临安市| 福海县| 泰和县| 玉环县| 泰和县| 达拉特旗| 密云县| 马山县|