構造函數有返回值


例子一 標准構造函數
function F1() {
    this.name = 'f1';
}

console.log(new F1()); // {name: "f1"} 返回實例, 委托原型
console.log(new F1().name); // f1

console.log(F1().name); // Uncaught TypeError: Cannot read property 'name' of undefined
console.log(F1()); // undefined
例子二 函數返回引用類型值
function F2() {
    this.name = 'f2';
    return {};
}

console.log(new F2()); // 引用類型值, 返回該值{} 
console.log(new F2().name); // undefined

// 這種情況,使用new調用就與調用正常函數一致
console.log(F2()); // {} 常規函數調用
console.log(F2().name); // undefined
例子三 函數返回基本類型值
function F3() {
    this.name = 'f3';
    return 5;
}

// 這種情況, 使用new調用函數就與調用標准構造函數一致
console.log(new F3()); // 基本類型值, 仍舊返回構造函數的實例 {name: f3}
console.log(new F3().name); // f3

console.log(F3()); // 5 常規函數調用
console.log(F3().name); // undefined


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM