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
}
 
*************************************************************************
posted @ 2016-09-03 16:40  阿巴阿巴55996  阅读(117)  评论(0)    收藏  举报