一沐飘、new操作符的作用
new操作符的作用是創(chuàng)建對象,將該對象通過構造函數(shù)與原型鏈連接起來耐朴。
它經歷如下階段
- 創(chuàng)建空對象
- 設置原型鏈
- 讓構造函數(shù)的this指向該對象借卧,執(zhí)行構造函數(shù)
- 判斷構造函數(shù)的返回值類型筛峭,如果是引用類型,則返回該引用類型的對象
由上述第4點可知影晓,構造函數(shù)不應該有返回值
function Hana(name,age) {
this.name = name
this.age = age
return 1 // 返回值為基本類型 無效
}
console.log(new Hana("花たん",28)) // logs Hana { name: '花たん', age: 28 }
二镰吵、new操作符的實現(xiàn)
function create(Con) {
var obj = {}
// 將arguments轉化為數(shù)組
var args = Array.prototype.slice.call(arguments,1)
Object.setPrototypeOf(obj,Con.prototype)
var result = Con.apply(obj,args)
return typeof result === 'object'?result:obj
}
console.log(create(Hana,"花たん",28)) // logs Hana { name: '花たん', age: 28 }