关于js原型和继承的方法复习
来源:互联网 发布:asp开源cms 编辑:程序博客网 时间:2024/06/05 10:35
1.首先我们先来看几个概念。
封装:将描述同一个东西的属性和方法,定义在一个对象中。
继承:父对象中的属性和方法,子对象可以直接使用。
多态:同一个对象,在不同情况下,呈现不同的状态。
2.如何定义构造函数?
function 构造函数名(参数...){
this.属性名=属性参数;
//此步骤表示在当前正在创建的对象中添加一个属性名,并且赋值
...
this.方法名=function(){
...this.属性名...
}
}
接下来是利用这个构造函数创建对象:
var obj=new 构造函数名(参数...)
3.js中一切继承都是利用原型对象实现的,
原型对象:每个函数都有一个原型对象,而构造函数的原型对象负责保存所有子对象共享的成员。
因此所有子对象共享的方法,都应该定义在构造函数的原型对象中。
4.我们来看几个方法。
(1).判断自有属性:obj.hasOwnProoerty("属性名")
(2).获得任意对象的父级原型对象:Object.getPropertyOf(子对象)
(3).判断一个prototype对象是否存在于另一个对象的原型链中:父对象.isPrototypeOf(子对象) 返回布尔值
5.例子,下面我们来看一个关于继承的例子,不多说,直接上代码,注释很清晰。
function flyer(fname,speed){ //定义了一个flyer构造函数 this.fname=fname; this.speed=speed; if(!flyer.prototype.fly){ flyer.prototype.fly=function(){ console.log(this.fname+"以"+this.speed+" 时速飞行") } }}var bird=new flyer("小鸟",40); //实例化上面的构造函数,并且传入参数,注意用newbird.fly(); //调用构造函数里面的fly方法function plane(fname,speed,capacity){ //定义一个函数plane flyer.call(this,fname,capacity); //调用构造函数的一瞬间更换参数对象 if(!flyer.prototype.isPrototypeOf(plane.prototype)){ //判断如果flyer的原型是plane的父原型,如果不是,就给他设置为他的父原型 Object.setPrototypeOf(plane.prototype,flyer.prototype); } this.capacity=capacity; //定义自己的capacity属性 if((!plane.prototype.hasOwnProperty("fly"))){ //判断plane自己的原型中是否有fly方法,没有则进行设置自己的fly方法 plane.prototype.fly=function(){ console.log(this.fname+"搭载"+this.capacity+"名乘客以"+this.speed+"的速度飞行"); } }}var A380=new plane("A380",1000,555); //实例化plane方法A380.fly(); //调用plane里面的fly方法,如果自己的原型有则用自己的,否则会用flyer构造函数里面的
阅读全文
1 0
- 关于js原型和继承的方法复习
- 关于js原型继承
- 关于js原型继承的理解
- JS原型和继承
- Js 原型和继承
- js原型和继承
- js原型和继承
- 关于原型继承的三种方法
- JS面向对象的继承三种方法:原型继承,原型冒充继承,复制继承
- 关于 javascript原型和继承的讲解
- js的原型继承
- js的原型继承
- 对于js原型和原型链继承的简单理解(第一种,原型链继承)
- js包装集和扩展方法(原型继承)
- Js中的原型继承和原型链
- js中的原型和继承
- js--原型、封装和继承
- JS原型继承和类式继承
- java可视化编程-eclipse安装windowbuilder插件
- 迷途指针
- leetcode 657. Judge Route Circle
- oracle学习笔记
- 源码(二)
- 关于js原型和继承的方法复习
- WinRAR x64 v5.5中文版去广告过程
- 1003 Dijkstra
- 二叉搜索树的后序遍历序列
- Oracle DDL语句及示例代码
- MD5算法原理
- HDU 2296 Ring(AC自动机+DP)
- git 基础
- (转)独家| ICO被定性为涉嫌非法集资 一夜暴富梦碎