我的博客:www.while0.com
我的博客:www.shishangguan.net
1.不通过创建对象方式调用构造函数,而是以普通方式运行构造函数,则构造函数中的this指向window,如
(function(){ var x=function(){ this.a='a'; } x(); })() alert(a);
在这一段中,会跳出a,即使构造函数是声明在闭包中的。而通过实例化方式,this则指向实例化对象的私有作用域
(function(){ var x=function(){ this.a='a'; } var y=new x(); alert(y.a); })()
通过call和apply方法,则会加到指定对象的作用域中去
var x=function(){ this.a='a'; } var y=new Object(); x.apply(y); alert(y.a);//a被加到了y的属性上
2.①每个对象都有一个constructor指向它的构造函数
②在 JavaScript 中,用 new 关键字创建对象是执行了下面三个步骤的:
1. 创建一个新的普通对象;
2. 将方法对象的 prototype 属性的所有属性复制到新的普通对象中去。
3. 以新的普通对象作为上下文来执行方法对象。
③prototype只有构造函数有
constructor只要是对象就有,指向创建它的构造函
__proto__也是每个对象都有,指向创建它的构造函数的prototype