不同于基于类的编程语言,如 C++ 和 Java,JavaScript 中的继承方式是基于原型的。同时由于 JavaScript 是一门非常灵活的语言,其实现继承的方式也非常多。 首要的基本概念是关于构造函数和原型链的,父对象的构造函数称为Parent,子对象的构造函数称为Child,对应的父对象和子对象分别为parent和child。 对象中有一个隐藏属性[[prototype]](注意不是prototype),在 Chrome 中是__proto__,而在某些环境下则不可访问,它指向的是这...
本文实例分析了JavaScript中继承的用法。分享给大家供大家参考。具体如下: // define the Person Class function Person() {} Person.prototype.walk = function(){alert (I am walking!); }; Person.prototype.sayHello = function(){alert (hello); }; // define the Student class function Student() {// Call the parent constructorPerson.call(this); } // inherit Person Student.prototype = new Person(); // correct t...
1.原型链 function SuperType(){ this.property = true; }SuperType.prototype.getSuperValue = function(){ return this.property; }; function SubType(){ this.subproperty = false; } //继承了SuperType SubType.prototype = new SuperType(); SubType.prototype.getSubValue = function (){ return this.subproperty; }; var instance = new SubType(); alert(instance.getSuperValue()); //true实现的本质是重写原型对象,代...
本文实例讲述了JavaScript模拟实现继承的方法。分享给大家供大家参考。具体分析如下: 我们都知道,在JavaScript中只能模拟实现OO中的"类",也就意味着,在JavaScript中没有类的继承。我们也只能通过在原对象里添加或改写属性来模拟实现。 先定义一个父类, //父类 function ParentClass() {this.className = "ParentClass";this.auth = "Auth";this.version = "V1.0";this.parentClassInfo = function () {return this.className ...
说到Javascript的类继承,就必然离不开原型链,但只通过原型链实现的继承有着不少缺陷。 无参数类继承的问题 先看一段示例代码,实现B继承于A:代码如下: function A() { } A.prototype.a1 = function() { }; function B() { } B.prototype = new A(); B.prototype.b1 = function() { }; var b = new B(); alert(b.constructor == A); // true alert(b.constructor == B); // false这段代码的主要问题是: 1.需要实例化A作为B的原型...
JavaScript是一门面向对象的语言。在JavaScript中有一句很经典的话,万物皆对象。既然是面向对象的,那就有面向对象的三大特征:封装、继承、多态。这里讲的是JavaScript的继承,其他两个容后再讲。 JavaScript的继承和C++的继承不大一样,C++的继承是基于类的,而JavaScript的继承是基于原型的。 现在问题来了。 原型是什么?原型我们可以参照C++里的类,同样的保存了对象的属性和方法。例如我们写一个简单的对象代码如下: functi...
js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念。所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 在面向对象的语言中,我们使用类来创建一个自定义对象。然而js中所有事物都是对象,那么用什么办法来创建自定义对象呢?这就需要用到js的原型: 我们可以简单的把prot...
本文实例分析了JS继承的用法。分享给大家供大家参考。具体分析如下: 继承 : 子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 ) 属性的继承 : 调用父类的构造函数 call 方法的继承 : for in : 拷贝继承 (jquery也是采用拷贝继承extend) 1. 拷贝继承 function Person (name){this.name = name; } Person.prototype.showName =function (){alert(this.name); } function Worker(name,job){Person.call(this,name);this.job ...
本文实例讲述了js封装可使用的构造函数继承用法。分享给大家供大家参考。具体如下: 先来看下面这段代码 (YUI)库所用的方法:代码如下:function extend(Child, Parent) {var F = function(){};F.prototype = Parent.prototype;Child.prototype = new F();Child.prototype.constructor = Child;Child.uber = Parent.prototype; } 另外还有一种拷贝继承方法,属性拷贝: 这种方法与之前的不同,由于已经完成对child的原型进行扩展,...
本文实例分析了javascript原型链继承的用法。分享给大家供大家参考。具体分析如下:代码如下:function Shape(){ this.name = shape; this.toString = function(){ return this.name; } } function TwoDShape(){ this.name = 2D shape; } function Triangle(side,height){ this.name = Triangle; this.side = side; this.height = height; this.getArea = function(){ return this.side...
javascript虽然是一门面向对象的语言,但是它的继承机制从一开始设计的时候就不同于传统的其他面向对象语言,是基于原型的继承机制,但是在这种机制下,继承依然有一些不同的实现方式。 方法一:类式继承 所谓的类式继承就是指模仿传统面向对象语言的继承方式,继承与被继承的双方都是“类”,代码如下: 首先定义一个父类(或超类):function Person(name){this.name=name;}Person.prototype.getName=function(){return this.nam...
本文实例讲述了js对象的复制继承。分享给大家供大家参考。具体如下:代码如下:<script type="text/javascript"> Object.prototype.extend = function(obj){ //在函数里,把obj属性复制到自身 for(var k in obj){ if(obj.hasOwnProperty(k)){ if(this[k] == undefined){ this[k] = obj[k]; } } } } var kitty = {color:yellow,climb:function(){alert(我会爬树);}}; var tiger = {color:yellow and black}; tiger....
此方法并非笔者原创,笔者只是在前辈的基础上,加以总结,得出一种简洁实用的JavaScript继承方法。 传统的JavaScript继承基于prototype原型链,并且需要使用大量的new操作,代码不够简洁,可读性也不是很强,貌似还容易受到原型链污染。 笔者总结的继承方式,简洁明了,虽然不是最好的方式,但希望能给读者带来启发。 好了,废话不多说,直接看代码,注释详尽,一看就懂~~~代码如下: /** * Created by 杨元 o...
1.使用prototype完成单继承.代码如下: //定义一个A类 function A(){ } //为A类动态调用属性color,与方法sayColor A.prototype.color = "blue"; A.prototype.sayColor = function(){ alert(this.color); }; //创建了一个B类 function B(){ } //让B继承自A B.prototype=new A(); //new出A的对象赋值给B的原型,B中就包含了A中的所有定义的属性与方法. //可不可以将继承的sayColor进行重写. B.prototype.sayColor=function(){ alert("...
本文实例汇总了javascript关于继承的用法。分享给大家供大家参考。具体如下: 例子:代码如下:/** * 实现子类继承父类,但不会产生多余的属性和方法 * @returns {Function} */ define(function(){ return function(subType, superType){ var proto = new Object(superType.prototype); proto.constructor = subType; subType.prototype = proto; }; }); //—————————————————————————— define(function(){...