javascript面向对象学习

我的博客: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

原文地址:https://www.cnblogs.com/yamadie/p/2835557.html