1.面向对象的三大特性封装继承你没有的,用别人的来用,即继承多态父类对子类对象的引用(JavaScript中没有)2.四种方式create对象使用字面量创建Objectvaro={key:value,key:value...}用一个创建一个,不能复用,造成代码冗余和资源浪费使用内置构造函数创建对象varo=newObject();varo=newArray();创建的对象都是空对象,需要手动给对象添加属性。导致代码重复封装简单工厂函数(不推荐)functioncreateObj(){varobj={};obj.xx=xxx;returnobj;}自定义构造函数构造函数名称{this.xxx=xxx;//...}1.构造函数名首字母要大写2.构造函数一般和new关键字一起使用3.构造函数默认返回值是新创建的对象。如果手动返回基本数据类型,则不影响默认返回值,如果返回对象,则不会返回新创建的对象,而是对象构造函数(constructor)在return1之后的执行步骤。使用new关键字创建对象2.调用构造函数创建new在构造函数中将生成的对象赋值给this3.使用this为新创建的对象添加成员4.默认情况下,新创建的对象原型构造函数有构造函数中的方法有问题。创建新对象时,对象会重新创建一次这个方法,每次独占独占方法但是方法内容完全一样,造成资源浪费1.解决方法1将构造函数中的方法抽取出来放在外面构造函数。如果在构造函数内部进行引用赋值,则创建的对象会指向构造函数外部的函数,从而达到共享的目的。问题:全局变量的增加会造成全局变量污染,代码结构混乱,不易维护。2.解决方案2使用原型3.什么是原型prototype?当创建构造函数时,系统会默认创建并关联一个对象。这个对象就是原型。默认情况下,原型对象是一个空对象。在默认的原型对象中,会有一个属性constructor,指向构造函数prototype在原型对象成员中的作用,它可以被其关联的构造函数创建的所有对象共享。原型对象的用法利用对象的动态特性,给原型对象添加成员,直接替换原型对象注:直接替换更改原型对象会导致替换前创建的对象原型与替换后创建的对象原型不一致。使用原型注意事项1、使用对象访问属性时,会在对象中查找,找到则直接使用。如果没有找到,就去原型里找。2、使用对象设置属性时,只会在对象本身查找,不会在原型中查找。如果在对象本身中找不到该属性,请向该对象添加一个新属性。如果对象中有这个属性,修改这个属性3.如果原型对象中有引用类型的属性,那么使用该对象修改属性的内容,与这个原型对象相关的所有其他对象都会受到影响人.原型。car={};varp=newPerson();p.car={};//这里是修改属性p.car.brand="";//这是修改属性的内容4.一般不给原型对象添加属性,只会把需要共享的方法添加到原型对象proto1中。该属性不是标准属性,所以存在通用性问题。2、一般不推荐使用该属性。3、调试时可以使用这个属性4、这个属性是替换原型时的注意事项原型中的属性:在新替换的原型中,没有constructor属性,会影响三角结构关系的合理性.所以,在新替换的prototype中,手动添加constructor属性,保证关系的合理性,赋值给关联的constructor
