js--原型、封装和继承
来源:互联网 发布:座狼猎人 升级数据 编辑:程序博客网 时间:2024/05/14 02:38
js–原型
js中所有函数都有一个prototype属性,这个属性默认引用一个原型对象。
例:
function Person(){}
此时的内存模块图:
为这个构造函数定义属性和方法
function Person(name){ this.name=name; this.say=function(){ console.log("this is a test"); }}
此时的内存模块图:
对象实例化
var p1= new Person("liyanan");
此时的内存模块图:
对象实例化过程一般分为三个步骤:
1.创建对象–var p1=new Person(“liyanan”);
2.将p1的内部prop属性指向构造它的函数Person()的prototype。(p1通过prop属性来取得原型链上的原型属性和方法。)
3.将p1作为this去调用构造函数Person();从而设置成员(即对象的属性和对象方法)并初始化。
js–封装
什么是封装:
封装就是将数据或函数等集合在一个个的单元中。(相当于java,c++中定义了一个类)。
类:将一些具有共同特征的对象集合在一起。例:
function Person(id,name,age){ this.id=id; this.name=name; this.age=age;}
当我们想要创建人的对象时,如果给人定义一个类,就可以每次我们需要定义“人”这个对象时,直接var val=new Person(),此时val默认就有了id,name,age这些属性了。
为什么要封装:
封装的目的:保护或者防止代码(数据)被我们无意中破坏。如上面例子可以看出,我们对Person这个对象进行了封装,每次定义新的对象时,我们仅对自己这个对象的属性进行操作,不会操作Person这个构类(js定义类,用function定义)。
怎样实现封装:
代码演示如下:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //属性在构造方法中定义 function Person(name,age,friends){ this.name=name; this.age=age; this.friends=friends; } //将方法定义在原型中 Person.prototype={ constructor:Person, say:function(){ console.log("my name is :"+this.name+",age is :"+this.age); } }; var p1=new Person("liyanan",13,["lh","jc"]); p1.friends.push("ld"); console.log(p1.friends); p1.say(); var p2=new Person("lyn",13,["lys","lc"]); console.log(p2.friends); p2.say(); </script> </head> <body> </body></html>
此时的内存模块图:
js–继承
继承:
就是子类继承父类的方法和属性。
下面介绍基于组合的继承方式:
代码如下:
function Parent(name){ this.name=name; this.friends=["jc","dlj"];}Parent.prototype.parentSay=function(){ alert(this.name+"----->"+this.friends);}//定义一个子类function Son(name,age){ this.age=age; Parent.apply(this,[name]);//使用call()或者apply()来继承属性}//使用原型链来实现继承方法Son.prototype=new Parent();Son.prototype.sonSay=function(){ alert(this.name+"------>"+this.age);}var s1=new Son("liyanan",13);s1.friends.push("lh");s1.parentSay();s1.sonSay();var s2=new Son("lyn",15);s2.parentSay();s2.sonSay();
内存模块图如下所示:
0 0
- js--原型、封装和继承
- JS原型和继承
- Js 原型和继承
- js原型和继承
- js原型和继承
- Js中的原型继承和原型链
- js中的原型和继承
- JS原型继承和类式继承
- JS继承--原型链继承和类式继承
- 让我们谈谈js原型链和继承
- 小谈js原型链和继承
- 2. js基础 - 原型和继承
- 深入理解JS继承和原型链
- js面向对象原型和继承
- 对于js原型和原型链继承的简单理解(第一种,原型链继承)
- JS:原型、原型链、继承
- js继承 对象冒充和原型链继承
- js 原型继承
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- 分支结构01
- 详解互联网平台的资金系统方案 自建支付清结算系统优势明显
- Eclipse中显示空格、制表符和回车
- Nginx实战(二) URL重写
- js--原型、封装和继承
- rxjava的使用场景(陆续跟新后面的情况,)
- HDU 1054 Strategic Game 最小顶点覆盖
- web前端-CSS 图片廊 -026
- SQL针对单列删除重复数据只保留一条id最大的数据
- 分支结构02
- 万用适配器(封装通用的基类GeneralAdapter)
- 计算机网络——TCP/IP
- oracle 绑定变量,索引优缺点