JavaScript之面向对象学习一
1、通过Object构造函数和对象字面量来创建对象缺点:使用同一个接口创建很多的对象,会产生大量的重复代码。比如我需要创建人的对象,并且需要三类人,医生、工程师、老师,他们可以抽象出很多属性,比如姓名、年龄、工作等,只是各自的值不一样,如果这里我用Object或者对象字面量来创建的话,那我必须每个人都写一次这三个属性,造成了代码重复。
2、思考下方法一的问题,我们发现我们可以通过一个工厂来创建对象,这样做的好处是,我们能把一些共同的属性封装到工厂里面,而我们创建对象时,只需要把对象的参数,传递给工厂函数,在由工厂来返回对象。代码如下:
function createPeron(name,age,job){
var object=new Object();
object.name=name;
object.age=age;
object.job=job;
object.sayName=function(){
alert(this.name);
}
object.sayForm=function(){
alert(typeof this);
}
return object;
}
var person=createPeron("张三",22,"coder");
person.sayName();
person.sayForm();
输出:"张三","object";
结论:虽然工厂模式帮助我们解决了创建多个相似对象的问题,极大的减少了创建对象所用的代码,但是却有解决对象识别的问题(即怎样知道一个对象的类型),从第二个输出"object"来看,通过工厂创建的对象,其对象类型永远是Object类型。我们永远无法知道它的具体类型!
3、思考方法二的问题, 发现因为众所周知,ECMAScript中的构造函数可用来创建特定类型的对象,像Object、Array、Date、Math等等的都是通过构造函数来创建的对应的对象。所以我们可以创建自定义的构造函数,来达到我们创建对象的目的,下面来简单的分析下构造函数:
//构造函数模式创建对象
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=function(){
alert(this.name);
}
this.sayForm=function(){
alert(Person);
alert(this.constructor);
}
}
var person=new Person("张三",22,"coder");
var person1=new Person("李四",23,"coder");
person.sayForm();
alert(person instanceof Object);
alert(person instanceof Person);
比较工厂模式创建的对象和构造函数模式创建的对象的差异:
(1)构造函数模式没有显示的创建对象
(2)直接将属性和方法赋给了this对象
(3)没有return 语句
注意:所有的构造函数函数名必须是大写(如果构造函数使用来创建对象的),这个做法借鉴与其他的oo语言(面向对象语言),并且这也是为了区别于ECMAScript中的其他函数,表名这个函数使用来创建对象的,因为构造函数本身也是一个函数。
要创建Person的实例,必须使用new操作符。下面来分析下构造函数模式创建对象的过程:
(1)创建一个新对象
(2)将构造函数的作用域赋给新对象(所以this就指向了这个新对象)
(3)执行构造函数中的代码(为这个新对象添加属性);
(4)返回新对象
在构造函数模式创建对象的代码实例中,person和person1分别保存着Person的一个不同的实例。这两个对象都有一个constructor(构造函数)属性,该属性指向Person,某种意义上,constructor属性就代表了对象的类型,即构造函数的函数名。
输出:Person所在的构造函数方法体,Person所在的构造函数方法体,"true","true"
person.sayForm()说明了对象实例的constructor属性永远是指向构造函数的(在这里只Person构造函数),所以我们可以通过constructor属性来判断实例的对象的类型,这解决了方法二工厂模式的不足之处.
最后两个输出true说明person实例即是Person类型又是Object类型。
总结:创建自定义的构造函数意味着将来可以将它的实例表示为一种特定的类型;这正是构造函数模式胜过工厂模式的地方,person和person1之所以同时是Object的实例,是因为所有对象均继承自Object;
4、将构造函数当作函数
构造函数与其他函数的区别就在与调用他们的方式不同。不过构造函数毕竟也是函数,不存在定义构造函数的特殊语法。任何函数,只要通过new操作符来调用,那它就可以作为构造函数;而任何函数,如果不通过new操作符来调用,那它和普通函数也没什么区别。例如上面代码中的Person()函数可以通过下面任何一种方式来调用
//当作构造函数使用
var person=new Person("张三",22,"coder");
person.sayName(); //作为普通函数调用
Person("李四",22,"coder"); //这里面的属性值,都将赋值给window对象
window.sayName(); //在另一个对象的作用域中调用(相当于在其他的类中调用Person类的属性和方法)
var o=new Object();
Person.call(o,"kobe",39,"Backetball Player"); //通过call()(或者apply())在摸个特殊对象(这里指Object对象o)的作用域中调用Person对象的属性和方法
o.sayName();
这里说下两种特殊情况:
(1)当将构造函数作为普通函数调用,函数的属性和方法都被添加给window对象。因为当在全局作用域中调用一个函数时,this对象总是指向Global对象(在浏览器中就指window对象),因此再调用完函数之后,可以通过window对象来调用sayName()方法。
(2)当我需要在某个特殊的对象的作用域中调用Person()对象,需要使用call()(或者apply()方法)。
5、构造函数模式创建对象的缺点
构造函数模式虽然好用,但也并非没有缺点,它的主要缺点就是每个方法都要在每个实例中重新创建一遍,在上面的代码中,person和person1都有一个名为sayName()的方法,但那两个方法不是同一个对象,因为在ECMAScript中,函数(Function)就是一个对象,因此每定义一个函数,就是实例化了一个对象,从逻辑角度讲,此时的构造函数可以这样定义,代码如下:
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=new Function("alert(this.age)");
}
var person=new Person("张三",22,"coder");
从上面代码的角度来看构造函数,更容易明白每个Person实例都包含一个不同的Function实例(以显示name属性)的本质。但是他们做的确是同一件事,说明白点以这种方式创建函数,会导致不同的作用域链和标识符解析,但创建Function新实例的机制任然是相同的。因此,不同实例上的同名函数是不相等的,以下代码可以证明:
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=new Function("alert(this.age)");
}
var person=new Person("张三",22,"coder");
var person1=new Person("李四",22,"coder");
alert(person.sayName==person1.sayName);
输出:false; 说明上述结论正确,两个Function完成的是同一功能,但是却非同一实例。
所以,为了让每个对象拥有相同的作用域链和标识符解析,说明白点,这里创建两个相同功能的Funcrion实例没有必要,我们可以这样,将对象的函数定义到对象外面,通过this对象,是每个对象在实例化方法前去掉用对应的外部函数,而这个函数在实例化对象调用前已被初始化,所以所有的实例化对象调用的都是同一函数!再点以下代码可以证明:
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
/*this.sayName=new Function("alert(this.age)");*/
this.sayName=sayName;
}
function sayName(){
alert(this.name);
}
var person=new Person("张三",22,"coder");
var person1=new Person("李四",22,"coder");
person.sayName();
person1.sayName();
alert(person.sayName);
alert(person.sayName==person1.sayName);
输出:张三、李四、sayName()方法所在的方法体、true;
最后的true说明,两个实例共用一个方法体!
在上面这个例子中,我们把sayName()函数的定义转到了构造函数外部。而在构造函数内部,我们将sayName属性设置成等于全局的sayName函数,这样一来,由于sayName包含的是一个指向函数的指针,因此两个实例就共用了共享了在全局作用域中定义的同一个sayName()函数。这样做确实让解决了构造函数的两个函数做同一件事的问题,可是新问题又来了:在全局作用域中定义的函数实际上只能被某个对象所调用,这让全局作用域有点名不其实,而最主要的问题是:如果对象需要定义很多方法,那么就需要定义很多的全局函数,于是我们这个自定义的应用类型就毫无封装型可言!
6、原型模式
原型模式创建对象的代码如下:
function Person(){
}
Person.prototype.name="张三";
Person.prototype.age=22;
Person.prototype.job="coder";
Person.prototype.sayName=function(){
alert(this.name);
}
var person1=new Person();
var person2=new Person();
alert(person1.sayName==person2.sayName);
输出:true;说明原型模式很好的解决了构造函数模式创建对象实例时,创建Function时导致的不同作用域链和标识符解析的问题,两个或多个Function相同功能,却并非同一实例。
无论什么时候,只要创建了一个新函数(这里是Person函数),就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象(原型对象里面所有的方法和属性都被其对应的对象的实例所共享)。在默认情况下,所有的原型对象都会自动获得一个constructor属性,这个属性指向prototype属性所在函数(这里是Person函数)的指针!
创建了自定义的构造函数之后,其原型对象默认只会取得constructor属性;至于原型对象其他方法,则都是从Object对象继承而来。
当使用构造函数创建了该对象的实例后,该实例的内部将包含一个指针(内部属性),ECMA-262 第5版中定义这个指针为[[prototype]],虽然在脚本中没有标准的方式访问该属性,但是在Firefox、Safari、Chrome中每个对象都支持一个属性_proto_;在其他实现中,这个属性对脚本是完全不可见的。不过我们需要知道的是这个连接(属性[[prototype]]或者_proto_)存在于实例与构造函数的原型对象之间,而不是存在于实例于构造函数之间;根据上面关于原型模式的描述,可以得到如如下的流程图:
aaarticlea/png;base64,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" alt="" />
上图展示了Person构造函数、Person原型属性(Person prototype)对象、以及Person现有的两个实例之间的关系,从上面的图中我们可以看出,Person.prototype指向了原型对象,而Person.prototype.constructor又指回了Person函数。Person的两个实例Person1和Person2都包含一个内部属性[[prototype]],这个属性仅指向了Person.prototype,也就是说,他们于构造函数没有直接的关系,另外结合上图的上面的代码我们发现,虽然两个Person的实例都不包含属性和方法,但我们却可以调用person1.sayName()。这是通过查找对象的属性来实现的。
虽然在所有的实现中都无法访问到[[Prototype]],但是我们可以通过isPrototypeOf()方法来判断实例和原型对象之间是否存在某种关系,即判断实例是否指向对象的原型属性对象(对象.prototype),代码如下:
function Person(){
}
Person.prototype.name="张三";
Person.prototype.age=22;
Person.prototype.job="coder";
Person.prototype.sayName=function(){
alert(this.name);
}
var person1=new Person();
var person2=new Person();
alert(Person.prototype.isPrototypeOf(person1)); //判断person1的[[prototype]]属性是否指向Person.prototype原型属性对象
alert(Person.prototype.isPrototypeOf(person2));
输出:true,true;说明person1实例和person2实例都指向Person.prototype原型属性对象,都可以调用里面的共享方法和属性。
在知道person1和person2是Person的两个实例后,我们就可以使用ECMAScript5中新增加方法-Object.getPrototypeOf()方法(在所有支持的实现中,这个方法返回[[Prototype]]的值)也就是说我们可以通过对象的实例来获取对象原型属性对象的值,代码如下:
function Person(){
}
Person.prototype.name="张三";
Person.prototype.age=22;
Person.prototype.job="coder";
Person.prototype.sayName=function(){
alert(this.name);
}
var person1=new Person();
var person2=new Person();
alert(Object.getPrototypeOf(person1)==Person.prototype);
alert(Object.getPrototypeOf(person1).age);
输出:true,22;
第一行alert说明了person1的[[prototype]]和Person.prototype是一样的都代表Person的属性对象;
第二行alert取得了原型对象中age的值22,使用Object.getPrototypeOf()可以方便的取得一个对象的原型属性,而这在利用原型实现继承是非常重要的!
虽然可以通过对象实例访问保存在原型中的值,但却不能通过对象实例重写原型属性对象中的值。如果我们在实例中添加一个属性,而该属性与实例原型中的一个属性同名,那就会在实力中创建该属性,该属性将会屏蔽原型中的那个属性。代码如下:
function Person(){
}
Person.prototype.name="张三";
Person.prototype.age=22;
Person.prototype.job="coder";
Person.prototype.sayName=function(){
alert(this.name);
} var person1=new Person();
var person2=new Person();
person1.name="李四";
alert(person1.name);
alert(person2.name);
输出:李四,张三;
观察上面代码的输出我们发现,person1对应原型对象中的属性被一个新值给屏蔽了,但无论访问person1.name还是person2.name都能够正常的返回值,既分别是"李四"(来自对象实例)和"张三"(来自原型对象),为什么会这样呢?
因为每当代码读取某个对象的属性时,都会执行一次搜索,目标是具有给定名字的属性。首先从对象本身实例开始。如果在实例中找到了具有给定名字的属性,则返回该属性的值,如果没有找到,则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性。如果在原型对象中找到了这个属性,则返回这个属性的值。
再看上面的代码,我们为对象实例添加一个属性(这个属性和原型对象中的属性名一样),这样只会阻止我们访问原型中的那个属性,不会修改那个属性!综上所述,任何对对象实例的操作只会改变当前实例的属性值,不会对对象的原型属性对象造成任何改变!即使使用delete操作符,也只能删除实例属性。代码如下:
function Person(){
}
Person.prototype.name="张三";
Person.prototype.age=22;
Person.prototype.job="coder";
Person.prototype.sayName=function(){
alert(this.name);
} var person1=new Person();
var person2=new Person();
person1.name="李四";
alert(person1.name);
delete person1.name;
alert(person1.name);
输出:李四,张三。
观察上面的代码,发现,使用delete操作符删除了person1.name,之前他保存的"李四"屏蔽了同名的原型属性name的属性值"张三"。把它删除以后,就恢复了对原型中name属性的连接。因此,接下来在调用person1.name时,输出的就是原型属性对象中的name属性值"张三"了;
当我们判断一个属性是存在于实例中还是原型中可以使用hasOwnProperty()方法(这个方法继承于Object)只在给定属性存在于对象实例中才会返回true;
function Person(){
}
Person.prototype.name="张三";
Person.prototype.age=22;
Person.prototype.job="coder";
Person.prototype.sayName=function(){
alert(this.name);
} var person1=new Person();
var person2=new Person();
alert(person1.hasOwnProperty("name")); //这段代码可以这样理解:person1实例是否有他自己的属性name,
// 输出:false,因为他没有自己的属性,他只有原型对象的name属性,这是被所有实例所共享的并不是person1自己的
person1.name="李四";//定义了一个自己的name属性相当于实例属性
alert(person1.hasOwnProperty("name")); //因为上面定义了一个person1自己的实例属性 所以输出:true delete person1.name; //删除了 person1的实例属性name;
alert(person1.hasOwnProperty("name")); //因为上面删除了person1的实例属性name,所以输出false
aaarticlea/png;base64,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" alt="" />
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAArQAAAFfCAIAAAAwN8hRAAAgAElEQVR4nO3d26HqIBBGYeuyIOuxGpvZxWQ/aBQITMiF8APrezonGjOBMEwuum8TAACA41Y7AAAAoIXiAAAAeCgOAACAh+IAAAB4KA6wzQ0A0AUr1V82qaAP9vEEAGgCxQHORHEAAB2gOMCZKA4AoAMUBzgTxQEAdIDiAGeiOACADlAc4EwUBwDQAYoDnIniAAA6QHGAM1EcAEAHKA5wJooDAOgAxQHORHEAAB2gOMCZKA4AoAMUBzgTxQEAdIDiAGeiOACADlAc4EwUBwDQAYoDnIniAAA6QHGAM1EcAEAHKA5wJooDAOgAxQHORHEAAB2gOMCZKA4AoAMUBzgTxQEAdIDiAGeiOACADlAc4EwUBwDQAYoDnIniAAA6QHGAM1EcAEAHKA5wpszigBoCAJRRHOBMObM+lQEAiKM4wB6p42Z14qcyAAB9FAfYKXroGMfT7XajMgCAJlAcYKdNxQFlAQA0hOIA+y2Pnq2XEwAAgigOcEhwAGWWCwAAZRQHOMo9hlZrBQCAPooDHJUqDqgMAKBRFAc4wfcwev+DLyYAQNMoDnAOygIA6AbFAU5DZQAAfaA4+LgBJdU+wNXV7h9AWpUhab16WRzVVWn9/tCMUTTLKpoISKE4qInchHI4ulbRREAKxUFN5CaUw9G1iiYCUigOaiI3oRyOrlU0EZBCcVATuQnlcHSt6qyJ/p735TNl9+df7bi0/T3vO1pp31pNoTioqbPcZCBtXW+co2u3zpooOsoYaabXY08L7VurMRQHNXWWmwykreuNc3Tt1lkTzaPsO6h+w+7xqhuaLIqDJIqDmjrLTQbS1vXGObp266yJFqPsO4s5i9w6ffnG+/P1fn1+af6AZS3vv+KN43kbj5fzrn0D3d0nZ4vBhyV2yo5zecYSabistV7zMiesX/1wfBfquFEcVFSl9avoMW2pG+foisrZ/c6aaHWUxS7gfQ7+YMy8VwgXJsbeYqQlLhTumfO++3QPP9La2PyaGWeyONix1rzKN5U41xaO7UI9N4qDiqq0fhU9pi114xxdKe++td9wWTAXWIyy72B4L/n8NxgL3mvxsjwYHN/3hlPhYgINBveOCe83YOcwgg83dmo1zug+HlorSEOP18FdqKnK6FgZsJfFUV1nucnQY9pSN87RZTPaobMmSj3ZY58Qv4/92IhKXJtbXvMLB5Jzfc57dcd8F1vVPU03dmo9zth+71srWOTlswO7UNWN4qCiKq1fRY9pS904R9eq9wEQXX59MOXERln8rl3eKFu5audNXt7CcJQdeIBvZWa1dmo9zlhk+9aavDMa/1znwC5UdaM4qKhK61fRY9pSN87RlWnZIJ010Uqlax7qxove8ExMuv6myxYHXrlvfPJ6nLHI9q3lvOv+fEavg+7ZhaqqjA57o10NV1tnucnQY9pSN87Rle99eLj/rRjM6VZGWeQe2t/z4d8kT44Dd+Ckb959Vi9QHEQeMvRv6Ed2ajXOKVYL7FvLifX94GHs3Gf7LtREcVBTZ7nJ0GPaUic4tkV8g2wi2nyr98git+/uxihbvn3jY7+nFgeJUKydWosz/Pycbysk1/LXjF0m2LUL9dz0EkhXw9VWpfWr6DFtqas1tttyfROVk/MATTBTmePA+Erw4tXY7feTbyvk/UbA4lUjznDl5O8c5K5lPvW0fxfqqDI67I12NVxtneUmQ49pS53g2NbxjrOVaAfW1hPDi/TiLmxjF34EE8hAw5XchHIEx7aIW6e3FXrU1MxqPorQxi44BBPIQMOV3IRyBMe2AjdC/WiH18bMGj4ZHX1RexeWBBPIQMOV3IRyBMd2dUF44tGilZnV/FMxbezCkmACGWi4kptQjuDYro7iAMgkmEAGGq7kJpQjOLbrWsamHC1Ql2ACGWi4kptQjuDYrigamGy0QHWCCWSg4UpuQjmCY7uWVGUAwCAyVH+vXhZHdbW7Hp2rckhfv9Hd2oq2S3SBLMEEMtCxwsA4iAY0CI5tNW1F2yW6QJZgAhnoWGFgHEQDGgTHtpq2ou0SXSBLMIEMdKwwMA6iAQ2CY1tNW9F2iS6QJZhABjpW6g+Mv+d9x49z7FurgPoNKExwbKtpK9ou0QWyBBPIQMdK7YGx748OCf2potoNKE1wbKtpK9ou0QWyBBPIQMdK7YFBcdAzwbGtpq1ou0QXyBJMIAMdK3mt7/40d/zvgX+n69f7rb95O/mnjYO/j3wz/pb5ylqveVksoL/14MPP3VJ0kFkMgmNbTVvRekrf2rvq1mHDXdA7wQQy0LGysTi4hzPzPMUGk/lnTIdLvZWSxcGOtRZ/qNS5trAe/PIzo3+95EADDqpK47TVI21F6yh99e66q4PNdkH/BBPIQMdKXuv/Zs95rH6XhBN67Ow/nLLjk/gZa81LPv99vHKCd9/8ezUzK5FZDIJjW01b0TooDlCcYAIZ6FjZVhy4I9U/WY8M5fkN7rK/8AbAYr19awWLvOl+LfjEhYrMawc6mSW+F0Oq3RUbnBqtdyjn3KT7jY7Hy3mXd+j7K7vX4sJtxe4thkPV2V4y7H03HBMBrGvrgBlKla6xNzrQsZLX+oeKg2imWS0Otq01eSf8/qWAleBj9xSWESSRWQyCY1vNadEuatycm3TxW2q3xSU4/4WV4sBbulYcxDaw74ZjIoALuwBnq9I19kYHOlbyWj8yvwZn85nFweKDsoqD9bWcd92fz+htgmTwx65fklkMgmNbzUnRRm69PZ9/GTfpglts68M62GJsxBv3+4LiIBV29PPXbzjGAljX1gEzFMEEMtCxsq04iBT8/rD0BmV6MFu1wL61nCjfDx7+3rwW/OKmxTT9PR+52YXMYhAc22rOiTY1ia/fpAvP5P1SenlLwdqkkQTixYFVl++54bivzm/rgBmKYAIZ6FjZWhwE7HP51cuAwSdnXjyMr+WvGbtMsBZ89LVzGnBQgmNbzSnRxm7kT9OUc5NusWr80d7koDlSHCTDjn5Yxg1HioPOCCaQgY6VvNZ3TicSvxSQHpbGyYf32bfENL9lLfPsIh38tKggcr/ISGYxCY5tNedEu3blIH2Tbq048FZx31ntyoFxw3HM4uCGMuKtfXHvVpRqAl/smT5F0VORssHnNeCgqjROWz1yTrThN4un9WcOPu/MKg6myDsjc7V1bzG8Kujf0QvDjn7++g3HMYuDjgkmkIGOla6KA/NRBIqD6wmObTVnRbv3CX+7OFiuvLgEsHy3P9CCj5h/iiz4KtFyA3tuOFIcdEYwgQx0rOS1vnpxELvsuXiR4uBygmNbzZnR+nPn8pQ+nN+naWNxEK+67eIg+BWyyMW9VNjbbzhSHHRGsGvkAiqnt+Ig8rAAxUE1FAer2oq2S3SBLMGukQuoHMHWbwsNaKA4WNVWtF2iC2QJdo1cQOUItn5baEADxcGqtqLtEl0gS7Br5AIq5waUVOWQvn6ju7UVbZfoAlmCXSMXEIBMggnF0Fa0XaILZAl2jVxAADIJJhRDW9F2iS6QJdg1cgEByCSYUAxtRdslukCWYNfIBQQgk2BCMbQVbZfoAlmCXSMXEIBMggnF0Fa0XaILZAl2jVxAADIJJhRDW9F2iS6QJdg1cgEByCSYUAyXfJ8UaFXtARqSCwhAJsGEYmgr2i7RBbIEu0YuIACZBBOKoa1ou0QXyBLsGrmAAGQSTCiGtqLtEl0gS7Br5AICkEkwoRjairZLdIEswa6RCwhAJsGEYmgr2i7RBbIEu0YuIACZBBOKoa1ou0QXyBLsGrmAAGQSTCiGtqLtEl0gS7Br5AICkEkwoRjairZLdIEswa6RCwhAJsGEYmgr2i5pd8Hf83673e7Pv9qB1CDYNXIBAcgkmFAMbUXbJaEueD28Xwd8vGLFwd/zPkqtINQ1M7mAAGQSTCiGtqLtUpUueM/5t8fr+w/v5XeVECsOvvXDe43P6mu+669sV4zg6JALCEAmwYRiaCvaLtXpgtfjM2d//7F4dVkczJXBgSnd3q4YwdEhFxCATIIJxXBGtPPZ4+PlXJd25w//avXvlXnF+/PPOQN9v/5bJ5hA3HNV8bklTyvFwadHDrY5xcExcgEByCSYUAxnFgeJS8nBjWznldQ16ccjWGWuJ2IraF+YzqBQHMQb2C0OnifN5fHtihIcy3IBAcgkmFAMpxYH77nj+99P5n89lneswxvWixvYweUD77/BTCZ+9rlK6YB5N6k7ZfNtBS1yAQHIJJhQDGcWB+HpZ2xG8eb3xRuTCx6vKXYJootrB0oHTHCt33rccIR6QalrPuQCApBJMKEYShQH4d3pyKS+Uhx8P8ldkJypKA7OErlMED5zsGjsjO8rNFtHCHXNTC4gAJkEE4qheHEQ3ArIu3IQLQ5OeiJOjtABE0z0wbcVWniE8FxCXTOTCwhAJsGEYihdHPivBY8jbCwOwocZpmn6ez6an6wEDxjnRwjciwnDVQeCXSMXEIBMggnFcNWVg8Cu4iD6Ye3PVYIHTKI4SN1Z6JZg18gFBCCTYEIxFC8O3Bn990MIO4uDKXrlu3GCB4xTEfiPIQxWHQh2jVxAADIJJhRDW9F2SbAL3jWAXxy8Hs6PVQ1SHgh2jVxAADIJJhRDW9F2Sa8L3ArAvZPjVAv290diWrz/o9c1FAdAswQTiqGtaLsk1AVuJeD97pQ/sy9/KqlTQl0zkwsIQCbBhGJoK9ou0QWyBLtGLiAAmQQTiqGtaLtEF8gS7Bq5gABkEkwohrai7RJdIEuwa+QCApBJMKEY2oq2S3SBLMGukQsIQCbBhGJoK9ou0QWyBLtGLiAAmQQTiqGtaLtEF8gS7Bq5gABkEkwohrai7RJdIEuwa+QCApBJMKEY8n/EBkB9tTMGgJ3aGr9tRdslukCWYNfIBQQgk2BCMbQVbZfoAlmCXSMXEIBMggnF0Fa0XaILZAl2jVxAADIJJhRDW9F2iS6QJdg1cgEByCSYUAxtRdslukCWYNfIBQQgk2BCMbQVbZfoAlmCXSMXEIBMggnF0Fa0XaILZAl2jVxAADIJJhTDWdH+Pe+32+32eG16++3+/Dtl8y1r64AZimDXyAUEIJNgQjGcFO082edWBxQHP20dMEMR7Bq5gABkEkwoBq4cVNfWATMUwa6RCwhAJsGEYqgULcXBT1sHTIZ+Olewa+QCApBJMKEYzor29VjOB59lM/eqgjt/OG/LvfDQlYsPmL/n/dNPr0eZJt9QHPwuOL2PArF6QnAsywUEIJNgQjGUKg6CwiCc/b/zx/2eeMc4rj1gXo9PN727oMRsnF8c/GL4hiVFcCzLBQQgk2BCMZQpDr6lwXeqD5Z8H2D8TgjfJXIzRGlXHjCfbih7pp5dHJS/iHGQ4FiWCwhAJsGEYihSHMyVgDs7+N9niM0f81p6c0RZSgeMd8HH6RzjDlH4+v35inTurxpsqfxT6poPuYAAZBJMKIaixYE3h3gLKQ5+VA6YxZ2g8DKQ79tN7rwfWz/6hjY6WaVrHHIBAcgkmFAMlxUHfjkQKQ62/lRCNzQOmMidoOf3gr+/3F+yeMN3gV9cBI+bNHH5QKNrPHIBAcgkmFAMRYoDY0b5vOF3MrmYUkarDTQOmNi3TZzl6TtEkULQr/wSFx6a6GeJrvHJBQQgk2BCMZQpDrK/rbDQxAnluRQOmLk/kg8TJO8QrRUHyZ6mONhFLiAAmQQTiqFUceAsi037zvwx+s8caBwwa1cOkneIcq8cNFn1SXSNTy4gAJkEE4rhpGiTZ55YJXHARL5JuvbMgf/0SOTxw+ANv2Pj7/loo1SQ6BqfXEAAMgkmFMNJ0bZ8elibyAGzvP6f+W2F1EMF36Mh8oZGDhSRrnHJBQQgk2BCMZwSbWMpX4zQAeNP485lIOMO0TR5hcX9+Wd9FWXxydKEumYmFxCATIIJxXBecUBlsFNbB8xQBLtGLiAAmQQTiqGtaLtEF8gS7Bq5gABkEkwohrai7RJdIEuwa+QCApBJMKEY2oq2S3SBLMGukQsIQCbBhGJoK9ou0QWyBLtGLiAAmQQTiqGtaLtEF8gS7Bq5gABkEkwohsRX1AF81B6jHq1oAORTyya2tqLtEl0gS7Br5AICkEkwoRjairZLdIEswa6RCwhAJsGEYmgr2i7RBbIEu0YuIACZBBOKoa1ou0QXyBLsGrmAAGQSTCiGtqLtEl0gS7Br5AICkEkwoRjairZLdIEswa6RCwhAJsGEYmgr2i6V7wLnbyJe+PcQP3/JsZW/wBgjODrkAgKQSTChGASj/U1l4bzymW46+/uP53fBpwXf7eT/teRyU/Xf8+51zfevPB/epLc7lxIcHXIBAcgkmFAMgtG6s5k/sVAc5Pi036fp5tYs3GiRrvHjOObMz9pAcHTIBQQgk2BCMQhGmz7VpThYF06jc2sWnleLd817Axd3veDokAsIQCbBhGI4K9rvRWR/jvAXByez7oTlTC7zVeT74l3LGSj6+ZN3vry44f5bJ5hq3Krkwlno1APGu9Hvt857ediGfvHg/O+3clBXeJ/qN7DXeLF6IYjI/eS1Tde4eHBq15xDLiAAmQQTiuGUaBeT0GdCWE5OwQvfTO9OJL9ZInxbON0kP39aTlifT3oEq8wfHVvhonnozAPGfwhwf3GQaNZoT+cWB8toVnvAXb1GdXBm15xELiAAmQQTiuGMaJOXlF+P3zJ/og9W8eY0d7oy1zI+P3yoMX35wPtvMFFdc/ngxAMmMn+GtxUyi4PgYcZoo03T9Hr6Pei2mL8osq6/xN70b4Ur7ywIjmW5gABkEkwohhOLg8WpXvRd/kmtd44Z3HXwJySnVIhvIVpgLObA+KSYOKm95iz1xAMmMn3uKw7C0/n7889u/rXiYG7hyBOLn62Zm3aXXHjpQHAsywUEIJNgQjGcE204uQZXBGLzrXNyHj9tD6ezyCXx9OfbtUC4IHUTguIg8ixIvFFyiwNvZW+htWkvVIoDAC0STCiGE6P1ptjfY2XBrBTOzvfnM/5C5PHCD/9CdfTztxUHdb8G0UpxcMqVg9gdD/8+AsWBSS4gAJkEE4rh7Gh/KT5xM3sx5b+/leDMKrEzVK88iE0mwedvLA6i0T0uKhVO7IL8Zw4SjwKYM3TwVMA0LZ85SHwBZbmhZSTrxQHPHEwUB0C7BBOK4YxoE18aiN/Ij/xuQZDx45evnfIg+V2I5SSXWRxEP+yqWejMA2Y5f6bm3O9e3rOvHMTuv0S/HnLo2wrJ4oBvK0wTxQHQLsGEYjgj2uSX173vq8d+aj/2mFry3vbyxDX9+ZuLg2kx8102CZ16wCyqg0hr/nbU+SJiVnHgLFm00qJ6W/+dA7vbg/X5nYNpmigOgHYJJhRD1Wgv+vU+ced2QQd/7iiqyg8oC45luYAAZBJMKIaa0UafYB/P2V1Q5YeGS6uzU4JjWS4gAJkEE4qhSrTh9xrGdn4X9Hb1oNqfZRQcy3IBAcgkmFAMlYuDbuavA9o6YIYi2DVyAQHIJJhQDG1F2yW6QJZg18gFBCCTYEIx3ACk1R6gIbmAAGQSTCgA+kByAVpFcQCgEJIL0CqKAwCFkFyAVlEcACiE5AK0iuIAQCEkF6BVFAcACiG5AK2iOABQCMkFaBXFAYBCSC5AqygOABRCcgGaVO2H3ADUcHWGuXh7AM5yfb4AcL0qI53kArSK4gAYAcUBgA0oDoARUBwA2IDiABgBxQGADSgOgBFQHADYgOIAGAHFAYANKA6AEVAcANiA4gAYAcUBgA0oDoARUBwA2IDiABgBxQGADSgOApf+mC3GU/HArrDR6zdZS+3jCp2rckhfv1FlNAjKqXh01Ukv12+yFhIHyqE4UECDoByKg26ROFAOxYECGgTlUBx0i8SBcigOFNAgKIfioFskDpRDcaCABkE5FAfdInGgHIoDBeM0yN/zvnwk9v78qx2X5fXwon28age0EcVBt0gcteOK+mUM1QizUBwoGKdBomNceRQ1lZTiKA66ReJQG4tBnGLRbUNxoGCcBpnHznfQ/AaT5hn53/PuBDafEjQ15ikOukXiUEscf8/77f78mzNFU4kiRHGgYJwGWYzx2ITrVt/LN96fr/fr80v+ZX93OBo3BOZtPF7Ou9bTjLNaMygOukXiUE0cFActbVTZOA2yOsZjlw8/Qy8Yse8VwoWJkb8Y54nLlGuD+fOpLdUGFAf9InGoJg6Kg5Y2qmycBlmM8e9QfC8JJt8/t9QP3uquvhiD3/d+p/FgyXeMB6nFnPbnz2iqNqA46BeJQzVxUBy0tFFl4zRI6rmizyBKVO3vkRcbb4krg7FnA/xhHN4fiJyZBJp83mCaKA46RuJQTRwUBy1tVNk4DRIb4/F7hnljfOWaoVfOewsXDw/Mnx6Pu9nKYKI46BiJI/3q1YmD4qDdjSobp0FWTtDNIWW86CUH51Gh2JNE/uXAnOKg5cpgojjoGInjQyBxUBy0u1Fl4zTIyhiP3MH7ez78J4WS480dtulbh5/Vs4uDNp8zcFEcdIvEEbxcMXFQHLS7UWXjNMjqrf3IzcO7McaXb9/40PFKcZD4lKbGPMVBt0gcX9UTh187JNZuSp3RO8whnWmcBll/7m8xvswS3f5p4/QXmSkO+t30KGNpInHE31MncVActLtRZTQIyqE46BaJA+VQHCigQVAOxUG3SBwoh+JAAQ2CcigOukXiQDkUBwpoEJRDcdAtEgfKoThQQIOgHIqDbpE4UA7FgQIaBOVQHHSLxIFyKA4U0CAoh+KgWyQOlENxoCD6XXrgLBUP7AobvX6TtdQ+rtC5Kof09RtVRoMcRAMaKjZOnfRy/SZr4bg/iAY0UBwooEEOogENFAfd4rg/iAY0UBwooEEOogENFAfd4rg/iAY0UBwoqN8gf8/7jr8YsG+tAuo3oDCKg27VP+5JHP2iOFBwu928v9jh/+Xw35JS9v190Sv+Kmlmq3BEGSgOukXiSCFxHEdxoIAxnsIYP47ioFskjhQSx3EUBwqcMe78bc9wiftXS52/Keqs8R11r/dbf8Mv+RdKl39i1Bmzm9Z6zctiAf2tBx9+7iION5kESziiDBUbp056uX6TtZA4Ip9L4jhJndFLj/g2jvF7OMDmtwRj8jMGwqXeSskxvmOteZXYnzpfDz72l9A/rzU9xqPNOJSrG/zi7VV0I3H0mzimUXNH7VbXcts0xn/H9ndJOC5jRXw48uJj8Yy15iWf/z5eOcG7b/696r7W7hiva7TGGWhvSRwkjnKqNA49Etg2xpfH+vymyM28+Q3usu/oCk4clhcTt60VLPJG7VrwifON99qM8SNGa5yB9pbEQeIoh8ZRcMEY9+7RhQuTY3zbWpNXt/sV/UrwsUuDjPFzjNY4A+0tiYPEUQ6No2D3GA+K8swxvvigrDG+vpbzrvvzGb3alwzefIKZMX7EaI0z0N6SOEgc5dA4CraN8chzRN7zN/5ASd8EtIb0vrWcKN/PD/3evBb84trjNP09H949SMb4PqM1zkB7S+IgcZRD4yjYOsYDdkluPz68/OSch46Ta/lrxqr9teBjrzHGjxitcQba2xuJg8RRDI2j4Lb16qAzHtzyO32JzR9Ayzc4QzA6WresZT6VlA5+WiSC4OSDMb7PaI0z0N6SOBafR+I4DY2jYPMYrxNmpjlObwAfCp4xfsRojTPQ3pI4bCSOI2gcBV2NcfOOImP8eqM1zkB7S+LI+UgSxz40jgJnjDsDIVyiPsa9a3vBdb+9wa+3yjRNHMam0RpnoL0lceR8JoljHxpHQW9jPBzgE2O8otEaZ6C9JXGsfyaJYy8aRwG9cBANaBitcQba29G69nQ0oIHGUUAvHEQDGkZrnIH2drSuPR0NaKBxFNyAkmof4JcaaG9rH1foXO0DHABOM1ZGqz19oGe1j24AOM1YGY0MfgStZ6BxAPRkrIxGBj+C1jPQOAB6MlZGI4MfQesZaBwAPRkro5HBj6D1DDQOgJ6MldHI4EfQegYaB0BPxspoZPAjaD0DjQOgJ2NlNDL4EbSegcYB0JOxMhoZ/Ahaz0DjAOjJWBmNDH4ErWegcQD0ZKyMRgY/gtYz0DgAejJWRiODH1Gj9V6P2y3616nVcGgB6MlYGY0MfoRecfB+NUfx8oJDC0BPxspohTP43/M+z0S/acudlvzJ7PfKvOL9+Tf/8/v6b5378y+2tchLZZzYep/YH6/vP5ylOd47/G6bxb/disLbQGK7Z6A4ANCTsTLaRcVBdCKLnefOr6RmxccjWGWezGIrNHVy/Hp8dv/7j+mK4iC+3TOc2TgAUNtYGa1wBv9Obu9J5/vfz8z0evwmo7lQCE+ZF6fQweUD779BqVD68kHx4iDylrAciL2F4gAATjZWRruoOAjP79PzWlAMfN+YXPB4Telb7YWvHZQrDsLAPzt4f/7N83xQDnnv218cnNhgFAcAejJWRru4OHAmOfe/y/ncrgXCBcmr7w0VBylzE/lNFlxP+TbT9uKgGIoDAD0ZK6PVLA6Cc9+8KwfR4iCsOa5Sev77TO+Ph/nkwf3+a4llceC0D8UBAOw1VkarWBz4rwWPI2wsDsKHGaZp+ns+ipcKF81/K48luiWRUxy811rUCRQHALDDWBlN4MpBYFdxEP2w8tcRas1/TrUQ7OSvOPBqAPeCAsUBAGw3VkarWRy4M/rvhxB2FgfT4gT7gh8RrDH//fbS/LaCWw5MsYsPFAcAsMFYGY0MfkTp1tvwMwexqzHxSydcOQCA7cbKaGTwI1SLA/OGCsUBAGw3VkYjgx9R8bZCYm7nbysAQBFjZTQy+BFXtl4w7ZvFAVcOAOBkY2U0MvgR17feRb8LfQYOLQA9GSujkcGPoPUMNA6AnoyV0cjgR9B6BhoHQE/Gymhk8CNoPQONA6AnY2U0MvgRtJ6BxgHQk7EyGhn8CFrPQOMA6MlYGS3/N3aArWof3QBwGjIaAADwUBwAAAAPxQEAAPBQHDhJy2cAAAPLSURBVAAAAA/FAQAA8FAcAAAAD8UBAADwUBwAAAAPxQEAAPBQHAAAAA/FAQAA8FAcAAAAD8UBAADwUBwAAAAPxQEAAPBQHAAAAA/FAQAA8FAcAAAAD8UBAADwUBwAAAAPxQEAAPBQHAAAAA/FAQAA8FAcAAAAD8UBAADwUBwAAAAPxQEAAPBQHAAAAA/FAQAA8FAcAAAAD8UBAADwUBwAAAAPxQEAAPBQHAAAAA/FAQAA8FAcAAAAD8UBAADwUBwAAAAPxQEAAPBQHAAAAA/FAQAA8FAcAAAAD8UBAADwUBwAAAAPxQEAAPBQHODr9bjdbrfHq3YcAIC6KA7wZRcH71dzUF4AQNtGLg5+s939+Vc7mIL+nvfPLr4ev6n773nPnezfzfNursW/3Yri85n+Fh4vb1UAgLxBi4NgZux62no9Pnv43ul5X4sXB7/NfSMAADRh4OLgO211PXF99nDt9D24ZxB718biIH69AgDQgHOLg/ls1Jl3b8uJwT1ndWah70T9er8+v+TPW+60Fcxo7mbmbXwnxUgc7jaN4mD1o/wwfq84reHs8vv15C2NROMU9GuDeZ7/FRTL9224rQAAaFSh4uAeXrKe54vYxezPa+EDb87UEy6NvDtjO5HpdktxkB3I2oX7xyNYJaNx0s8DHpiJ54/0d8Wb5522oTgAgFGUKQ4iE6Q7qYSzofda/GpCMHl/37ucO6Nz2/e/0bPhzOIg/lGvx2/tOYgghsX/w8sH3n+jjXN6cfCZ3h8P88mDucp7vGLFweM1URwAQIfK3VaYuROmOcHFJurELYXwlNfdtnPHeznThmXAxtsK1ke5n+cXA983Jhe4+x9vnFJWHktcduT9+ec+a0hxAAAdurQ4SM5EyeJg5WaDNwt5C8MZ3f70TcVBuFJkUl8pDr6f5C6wG+cyThjRtvp97cG73uFdVaE4AIC2FS8OvBN6cy42XvQmTufBwNgjiP7F/9LFQXArIO/KQbQ4WIvlggsLy7tCywC+zy0u9qpWOQMAOFupZw6C2TI4n/ce6X/4Z+DJidqdSdPPHHxWP1Qc+DO+9VH+a8HubSwOzMY5vTjY8DMHsWdD473ElQMA6EKp4iA2u0xTdIq7G8VB+qsAmd9WSBQHiUCjzwnmXDmIfs7G4sBsnNPtLQ5yLrJQHABA24rdVsj7mYPUnDv5yxKflP4FhEPFwYYrB14Qv/sdO4sDo3EuYc/t/G0FABhF+QcSIc8uwfx3ceUAAPpHcYCP4HcVAADDojgAAAAeigMAAOAZ9K8yAgCAFIoDAADg+QcUTKTexkK9EgAAAABJRU5ErkJggg==" alt="" />
aaarticlea/png;base64,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" alt="" />
JavaScript之面向对象学习一的更多相关文章
- JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)
一.动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可 ...
- JavaScript之面向对象学习八(继承)
简介:继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法. 但是JS的函数并没有签名,所以在ECMASc ...
- JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象
一.仔细分析前面的原型模式创建对象的方法,发现原型模式创建对象,也存在一些问题,如下: 1.它省略了为构造函数传递初始化参数这个环节,结果所有实例在默认的情况下都将取得相同的属性值,这还不是最大的问题 ...
- JavaScript之面向对象学习五(JS原生引用类型Array、Object、String等等)的原型对象介绍
1.原型模式的重要性不仅仅体现在创建自定义类型方面,就连所有的原生的引用类型(Obejct.Array.String等等)都在构造函数的原型上定义方法和属性.如下代码可以证明: alert(typeo ...
- JavaScript之面向对象学习四原型对象的动态性
1.由于在原型中查找值的过程是一次搜索,因此我们对原型对象所做的任何修改都能够立即从实例上反映出来---即便是先创建了实例后修改原型也是如此.代码如下: function Person(){ } va ...
- JavaScript之面向对象学习三原型语法升级
1.到目前为止,我们是时候分析下前面的使用原型语法来定义对象有哪些不足的地方,代码如下: function Person(){ } Person.prototype.name="张三&quo ...
- JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法
1.原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用中,代码如下: function Person(){ } Person.protot ...
- 从 prototype.js 深入学习 javascript 的面向对象特性
从 prototype.js 深入学习 javascript 的面向对象特性 js是一门很强大的语言,灵活,方便. 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽. 不过我接触的动态 ...
- JavaScript的面向对象编程(OOP)(一)——类
在学习JavaScript面向对象的编程之前,需要知道,并了解面向对象的一些基本的常识.初学者中大多数都以为面向对象中,面向对象的编程是很重要和占据很大一部分精力.笔者在之前也是认为OOP是面向对象的 ...
随机推荐
- 2014第11周一word样式
今天摸索使用了word的样式替换功能感觉不错,简单记录下: 1.将某一个样式的标题统一替换为另一样式,之前一般是格式化一个个找到标题设置格式, 今天才发现可以选中标题->在浮动框上单击样式或开始 ...
- chapter 10 统计检验
1.permutation test 用途:用于检验两组数据是否出生于同一分布 思路:如果产生于同一分布,两组数据混合,重新排列后,计算的基于两组数据的函数值(均值,中位数,方差等,下面程序中使用f指 ...
- 搭建本地Ubuntu 镜像服务器
一.需求分析 最近公司软件Team 有个需求是这样的:能不能在局域网搭建一个Ubuntu 镜像服务器, 这样作的好处是可以节省Ubuntu某些常用工具的安装时间. 二.部署过程 2.1 测试环境 目前 ...
- 在asp.net中如何实现伪静态页 [转]
我在这里就不过多讨论静态页.伪静态页.动态页的长短利弊了.只是单纯的讲解如何在asp.net中如何实现伪静态页,以帮助有这方面有需求的朋友,快速解决boss派下来的任务.(拿奖金的时候,记得有我一份功 ...
- CSS实现倒影-------Day80
发现这个功能的时候非常开心,结果不想居然是个残次品,让我不禁想起了"天龙八部"上段誉的六脉神剑,在这个浏览器上能够.在还有一个上就无论了啊,时灵时不灵的,只是有总比没有要来的好,一 ...
- HNU 12850 Garage
长为H的格子里面放n个长为h的格子 最多会有n+1个空隙 要使每一个空隙长度都小于h (H-h*n)/(n+1)<h n>(H/h-1)/2 #include<bits/stdc++ ...
- Java面试题之Class.forName的作用
按参数中指定的字符串形式的类名去搜索并加载相应的类,如果该类字节码已经被加载过,则返回代表该字节码的Class实例对象,否则,按类加载器的委托机制去搜索和加载该类,如果所有的类加载器都无法加载到该类, ...
- ASP.NET对路径"xxxxx"的访问被拒绝的解决方法小结
异常详细信息: System.UnauthorizedAccessException: 对路径“D:/temp1/MyTest.txt”的访问被拒绝 在windows 2003下,在运行web ...
- LintCode (9)Fizz Buzz
下面是AC代码,C++风格: class Solution { public: vector<string> fizzBuzz(int N) { vector<string> ...
- 一个小型的DBHelper的诞生(1)
一直想做一个自己的简单的 DBHelper .没有其他原因,只是其他的轮子用起来感觉太重了. 设计的大体思路如下: 大体方向: 生成一个简单版本的DB层,需要支持数据库 MySql,Oracle,Sq ...