1.找出对象的构造器----constructor/instanceofjavascript
constructor是用模版实例化对象的时候附带的一个额外属性,这个属性指向建立该对象时所使用的javascript构造函数。java
用法:函数
var house = new Accommodation(); house.constructor === Accommodation; //true
这中比较也能够用关键字instanceof来完成,this
var house = new Accommodation(); apartment instanceof Accomodation; //true
2.经过原型添加属性和方法spa
javascript中的每一个函数,即每一个构造器,都有一个叫prototype的属性。咱们用关键字new来建立一个“类”的对象实例时,实例中所包含的属性和方法都来自prototype。prototype
能够用点标记法和直接量标记法为一个模版的全部对戏那个实例添加自定义的属性和方法。code
点标记法:对象
//定义一个名为Accommodation的构造函数 function Accommodation(){} //为这个“类”添加属性 Accommodation.prototype.floor = 0; Accommodation.prototype.rooms = 0; Accommodation.prototype.shareEntrance =false;
直接量标记法:blog
//定义一个名为Accommodation的构造函数 function Accommodation(){} //经过对象直接量为这个“类”添加属性和方法 Accommodation.prototype = { floors:0, rooms:0, sharedEntrance:false, lock:function(){}, }
prototype这个属性关键字有一个强大的特性是容许在对戏那个实例已经被建立后继续添加属性和方法,而这些新添加的属性和方法会自动添加到全部对象实例中,无论是已建立的仍是将要建立的。ip
3.经过做用域添加属性和方法
若是将一个变量或函数定义在任何一个函数以外,直接将其放在一个javascript或者HTML文件里,那么这个变量或函数会被添加到全局做用域中,这意味着在代码的任何位置都可以使用该变量或函数,甚至在其余函数体内也能够。
4.上下文和this关键字
使用this的好处:能够随意改变对象的变量名而不用担忧对象中方法的行为收到影响。
上下文环境:在大多数状况下指的是函数运行时封装这个函数的那个对象;当不经过任何一个对象单独调用时,上下文环境值得就是全局的window对象。
注意:对象中的潜逃函数其上下文环境是全局的window对象,而非包含它的那个对象,能够在this指向包含这个函数的对象时,将this的值保存在一个变量中,而后在用到该对象时,用这个变量来代替。好比用变量名为:that
在使用new关键字建立对象时,this执行的值和通常状况下又有区别。this指向的是经过构造函数所建立的那个对象实例。正是由于这个特性,咱们得意在构造函数中经过this来设置全部对象实例的属性和方法,而非像以前那样使用prototype关键字。
结合prototype和this关键字来定义对象实例的属性和方法,其中前者定义方法,后者来定义属性。
5.方法的链式调用
若是但愿可以对方法进行链式调用,则须要在“类”中的方法最后经过this关键字返回对象实例的引用便可。