一、JS类和对象1、使用CLASS声明一个类,类名还是大写2、类中有一个构造函数,可以接收传入的参数,同时返回实例对象3、构造函数不需要加函数!!!!!!!!!!!!!!!!!!!!!!4.只要new生成一个实例就会调用构造函数5.!!!!!!!!!类名后面没有括号()!!!!!!!!!!!!!!二、关于构造函数1、构造函数中的属性和方法称为成员,可以添加成员2、构造函数的静态成员和实例成员3、构造函数中可以添加一些成员,可以在构造函数中添加构造函数本身,或者您可以在构造函数中向this添加4。一定要实例化对象!!!!!!!!!!!!!!!!!!!!!!!!!!3.关于原型,--proto--1。构造函数有原型,对象有--proto--属性2。每个构造函数都有一个原型属性,指向另一个对象,这个对象的所有属性和对象都会被构造函数3拥有。一般情况下,公共方法放在原型对象上,公共属性放在构造函数中。s1之所以可以访问Way1,是因为s1存在--proto--属性指向构造函数的原型对象,注意到Way的原型对象等于s1的对象原型方法。对象原型方法的查找规则:首先查看s1本身是否有方法,如果有则执行,如果没有则到构造函数的原型对象(Way.prototype)中查找原型对象的构造函数属性:constructor属性指向构造函数,记录对象引用了哪个构造函数。很多时候,需要手动将constructor属性指向原来的constructor成员查找机制:根据原型链,如果对象本身不存在,则查找对象--proto--,不再赘述,寻找--proto--,untilnull使用原型对象扩展内置对象方法:4.关于this指向1.this单独指向windows对象alert(this)//this-->window2.this中全局函数指向window对象functiondemo(){alert(this)}//this-->windowdemo()3.严格模式下,undefinedfunctiondemo(){'usestrict'alert(this)//undefi内德}演示()4。构造函数中的this指向实例化对象(构造函数的原型对象的this也指向它)functiondemo(){//alert(this)//this-->objectthis.testStr='thisisatest'}leta=newdemo()alert(a.testStr)5.callmethodthisfunctiondemo(){alert(this)}demo.call('abc')//abcdemo.call(null)//this-->窗口演示。call(undefined)//this-->undefined
