前端视频js高级

  • 构造函数相当于类,通过new来实例化出一个对象
  • 对象的操作都是通过 . 或者[]
  • 创建对象的三种方式:调用系统的构造函数、字面量的方式、自定义构造函数。

         分别为:var obj=new Object();obj.name=""; obj.eat=function(){};

         第二种:var obj={name:"", sex="",  eat:function(){} }; 

         第三种:var obj=new Person("","",18);  function Person(name,sex,age){ this.name=name; this.eat=function(){};}

  • 实例对象通过构造函数来创建
  • console.dir(obj); console.dir(Person);这个代码的结果:

       

  • 哎呦,我的天,写了很多的东西,又被CSDN弄没了,为什么这么难用。我的心啊
  • 构造函数和实例对象和原型对象三者之间的关系:构造函数实例化实例对象,构造函数有个prototype属性,里面是自己的远行对象,原型对象中的constructor构造器指向自己的构造函数,实例对象中的原型对象,即proto属性指向该构造函数的原型对象。构造函数中的原型对象中的方法是可以被实例对象直接访问的。
  • 需要共享的数据写在原型中,不需共享的写在构造函数中。Person.prototype.age=18;Person.prototype.eat=function(){};简单写法:Person.prototype={constructor:Person,age:18,eat:function(){}} 但是这个会少了构造器那个属性,所以要手动添加上。
  • 原型中的方法是可以相互访问的,通过this.方法名
  • 如果构造函数中和原型中定义了相同的属性名或者方法,那么先从实例对象中找,找不到再去实例对象的proto属性指向的远行对象prototype中找,再找不到就报错。
  • 把局部变量转成全局变量:如果在函数外使用函数内调用的变量,会报错,那么把变量传给window就好了,比如
  • 把局部变量暴露给window,就成为了全局变量
  • 原型链:是一种关系,实例对象和原型对象之间的关系,是通过原型(_proto_)来联系的。
  • 原型指向可以改变,比如: