function Hero(){ this.name = "jscript"; } Hero.prototype.name = "javascript"; var hero = new Hero(); alert(hero.name); //output jscript delete hero.name; alert(hero.name); //output javascript
扩展内建对象
//为原型 Array对象增加一个判断的函数 Array.prototype.inArray = function(color){ for(var i = 0, len = this.length; i < len; i++){ if(this[i] === color){ return true; } } return false; } //定义一个Array对象 var a = ["red", "green", "blue"]; //测试 alert(a.inArray("red")); //true alert(a.inArray("yellow")); //false
10.继承
如果两个类都是同一个实例的类型,那么它们之间存在着某些关系,我们把同一个实例的类型之间的泛化关系称为“继承”。
继承关系至少包含三层含义:
① 子类的实例可以共享父类的方法。
② 子类可以覆盖父类的方法或扩展新的方法。
③ 子类和父类都是子类实例的“类型”。
在javascript中,并不支持“继承”。也就是说,javascript中没有继承的语法。从这个意义上来说,javascript并不是直接的面向对象语言。
11.原型链
原型链是ECMAScript标准制定的默认继承方式。
例如:
function A(){ this.name = "a"; this.toString = function(){return this.name}; } function B(){ this.name = "b"; } function C(){ this.name = "c"; this.age = 18; this.getAge = function(){return this.age}; } B.prototype = new A(); C.prototype = new B();
解释说明:
将对象直接创建在B对象的prototype属性中,并没有去扩展这些对象的原有原型。
通过new A ( ) 另创建了一个新的实体,然后用它去覆盖该对象的原型。
javascript是一种完全依靠对象的语言,其中没有类(class)的概念。
因此,需要直接用new A ( ) 创建一个实体,然后才能通过该实体的属性完成相关的继承工作。
完成这样的继承实现之后,对 A ( ) 所进行的任何修改、重写或删除,都不会对 B ( ) 产生影响。
只继承于原型:
function A(){} A.prototype.name = "a"; A.prototype.toString = function(){return this.name}; function B(){} B.prototype = A.prototype; B.prototype.name = "b"; function C(){} C.prototype = B.prototype; C.prototype.name = "c"; C.prototype.age = 18; C.prototype.getAge = function(){return this.age};
对象之间的继承(扩展内容,可以不会)(浅复制)
//该函数接受一个对象并返回它的副本 function extendCopy(p){ var z = {}; //定义一个空的对象z for(var i in p){ //var i =0 ; i < p.length ; i++ z[i] = p[i]; //都当做数组处理的话,可以理解 } //uber属性:将p作为z的父级,将z指向p的原型 z.uber = p; return z; } //定义对象a,但是对象a不是函数对象 var a = { name : "a", toStr : function(){return this.name;} } //定义对象b,但是对象b不是函数对象 var b = extendCopy(a); b.name = "b"; b.toStr = function(){return this.uber.toStr() + " , " + this.name;}; //定义对象c,但是对象c不是函数对象 var c = extendCopy(b); c.name = 18; alert(c.toStr()); //output a , b , 18
PS:教程中不少代码排版不太规范,小编这里推荐几款本站javascript代码格式化美化工具供大家使用:
JavaScript代码格式化工具:
JavaScript代码美化/压缩/格式化/加密工具:
jsmin在线js压缩工具:
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》