整理一下js面向对象中的封装和继承。 1.封装js中封装有很多种实现方式,这里列出常用的几种。 1.1 原始模式生成对象直接将我们的成员写入对象中,用函数返回。 缺点:很难看出是一个模式出来的实例。 代码:代码如下:function Stu(name, score) {return {name: name,score: score}}var stu1 = Stu("张三", 80);var stu2 = Stu("李四", 90);console.log(stu1.name); // 张三1.2 生成构造模式对象js帮我们提供了一个使用构造函数生成...
1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方...
本文实例汇总了javascript关于继承的用法。分享给大家供大家参考。具体如下: 例子:代码如下:/** * 实现子类继承父类,但不会产生多余的属性和方法 * @returns {Function} */ define(function(){ return function(subType, superType){ var proto = new Object(superType.prototype); proto.constructor = subType; subType.prototype = proto; }; }); //—————————————————————————— define(function(){...
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继承方法。传统的JavaScript继承基于prototype原型链,并且需要使用大量的new操作,代码不够简洁,可读性也不是很强,貌似还容易受到原型链污染。笔者总结的继承方式,简洁明了,虽然不是最好的方式,但希望能给读者带来启发。好了,废话不多说,直接看代码,注释详尽,一看就懂~~~代码如下:/*** Created by 杨元 on 14-11-11.* 不使用prototy...
本文实例讲述了js对象继承之原型链继承的用法。分享给大家供大家参考。具体分析如下:代码如下: //定义猫的对象 var kitty = {color:'yellow',bark:function(){alert('喵喵');},climb:function(){alert('我会爬树')}}; //老虎对象的构造函数 function tiger(){this.color = "yellow and black";this.back = function(){alert('吼吼...');} } //给构造函数声明原型,那么构造出的对象,就会有一个祖先:即该原型 tiger.prototype =...
本文实例讲述了js对象的复制继承。分享给大家供大家参考。具体如下:代码如下: 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.extend(kitty); tiger.climb();希望本文所述对大家的j...
本文实例讲述了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*this.height/2; }; } ...
javascript虽然是一门面向对象的语言,但是它的继承机制从一开始设计的时候就不同于传统的其他面向对象语言,是基于原型的继承机制,但是在这种机制下,继承依然有一些不同的实现方式。 方法一:类式继承 所谓的类式继承就是指模仿传统面向对象语言的继承方式,继承与被继承的双方都是“类”,代码如下: 首先定义一个父类(或超类):function Person(name){this.name=name;}Person.prototype.getName=function(){return this.nam...
本文实例分析了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继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念。所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 在面向对象的语言中,我们使用类来创建一个自定义对象。然而js中所有事物都是对象,那么用什么办法来创建自定义对象呢?这就需要用到js的原型: 我们可以简单的把prot...
JavaScript是一门面向对象的语言。在JavaScript中有一句很经典的话,万物皆对象。既然是面向对象的,那就有面向对象的三大特征:封装、继承、多态。这里讲的是JavaScript的继承,其他两个容后再讲。 JavaScript的继承和C++的继承不大一样,C++的继承是基于类的,而JavaScript的继承是基于原型的。 现在问题来了。 原型是什么?原型我们可以参照C++里的类,同样的保存了对象的属性和方法。例如我们写一个简单的对象代码如下: functi...
说到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中只能模拟实现OO中的"类",也就意味着,在JavaScript中没有类的继承。我们也只能通过在原对象里添加或改写属性来模拟实现。 先定义一个父类,//父类 function ParentClass() {this.className = "ParentClass";this.auth = "Auth";this.version = "V1.0";this.parentClassInfo = function () {return this.className +...