new
new 构造函的内部实现过程按顺序
function CO(){ this.p = “I’m in constructed object”; this.alertP = function(){ alert(this.p); }}var o2 = newCO();第一步 1.在函数内部创建一个和构造函数同名的空对象 CO = {}
2.并设置原型 CO(对象).__proto__ = CO(构造函数).prototype
3. 将this 指向空对象 CO = {}
(此时 this intanceof CO(函数) 就会返回true了)
第二步:执行函数内部的语言
第三步:隐式得返回 CO 对象, 如何显示返回一个对象的话, 会覆盖CO对象
构造函数可以包含返回语句(不推荐),但返回值必须是this,或者其它非对象类型的值 (实现原理,不用深究)
防止构造函数作为普通函数调用
**********************************************************************
function User(first, last) {
// 防止构造函数作为普通函数调用
// 利用new实例化对象的步骤和instanceOf操作符,测试已构建对象是否构建于构造函数
if (!(this instanceof arguments.callee)) {
return new arguments.callee
}
this.name = first + "" + last
}
*************************************************************************

浙公网安备 33010602011771号