JavaScript中new和this

new

var obj = new Base();
相当于:

var obj  = {}; //创建空对象obj
obj.__proto__ = Base.prototype; //将空对象的__proto__成员指向Base对象的prototype成员对象
Base.call(obj);//类似完成了继承

如果我们给Base原型添加新方法:

Base.prototype.toString = function() {
    return this.id;
}
var obj = new Base();//obj就会有toString方法 

通过对原型的扩展,达到了设置类公共方法的目的,完成了类似继承的功能。

this

一般而言,在Javascript中,this指向函数执行时的当前对象。
该关键字在Javascript中和执行环境,而非声明环境有关。
var someone = {
    name: "Bob",
    showName: function(){
        alert(this.name);
    }
};

var other = {
    name: "Tom",
    showName: someone.showName
}

other.showName();  //Tom
当没有明确的执行时的当前对象时,this指向全局对象window。
var name = "Tom";

var Bob = {
    name: "Bob",
    show: function(){
        alert(this.name);
    }
}

var show = Bob.show;
show();  //Tom
得到对象内部变量,通过局部变量var接收数据
var name = "Bob";  
var nameObj ={  
    name : "Tom",  
    showName : function(){  
        alert(this.name);  
    },  
    waitShowName : function(){
        var that = this;       //通过局部变量var接收
        setTimeout(function(){
            that.showName();
        }, 1000);
    }
}; 
 
 nameObj.waitShowName();  //Tom

参考:motian06
参考

posted @ 2016-07-12 10:22  toto怎么会喝醉  阅读(236)  评论(0编辑  收藏  举报