关于js原型和继承的方法复习
2017-09-02 20:18
591 查看
1.首先我们先来看几个概念。
封装:将描述同一个东西的属性和方法,定义在一个对象中。
继承:父对象中的属性和方法,子对象可以直接使用。
多态:同一个对象,在不同情况下,呈现不同的状态。
2.如何定义构造函数?
function 构造函数名(参数...){
this.属性名=属性参数;
//此步骤表示在当前正在创建的对象中添加一个属性名,并且赋值
...
this.方法名=function(){
...this.属性名...
}
}
接下来是利用这个构造函数创建对象:
var obj=new 构造函数名(参数...)
3.js中一切继承都是利用原型对象实现的,
原型对象:每个函数都有一个原型对象,而构造函数的原型对象负责保存所有子对象共享的成员。
因此所有子对象共享的方法,都应该定义在构造函数的原型对象中。
4.我们来看几个方法。
(1).判断自有属性:obj.hasOwnProoerty("属性名")
(2).获得任意对象的父级原型对象:Object.getPropertyOf(子对象)
(3).判断一个prototype对象是否存在于另一个对象的原型链中:父对象.isPrototypeOf(子对象) 返回布尔值
5.例子,下面我们来看一个关于继承的例子,不多说,直接上代码,注释很清晰。
封装:将描述同一个东西的属性和方法,定义在一个对象中。
继承:父对象中的属性和方法,子对象可以直接使用。
多态:同一个对象,在不同情况下,呈现不同的状态。
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); //实例化上面的构造函数,并且传入参数,注意用new bird.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构造函数里面的
相关文章推荐
- 关于原型继承的三种方法
- js方法和原型继承(一)
- #笔记#圣思园 JavaWeb 第57讲——JS继承:对象冒充、call方法、apply方法、原型链方式、混合方式
- 一切皆对象之两个方法概括js,无函数签名(无多态),原型,闭包,封装,引用类型,继承……
- js中关于原型的几个方法
- 关于js原型继承
- 关于js原型继承的理解
- js原型继承的两种方法对比介绍
- JS 原型继承的几种方法
- js面向对象小结(工厂模式,构造函数,原型方法,继承)
- js 继承 三种常用方法 原型链-借用构造函数-组合式继承
- js使用原型实现继承与new一个新对象的方法
- js原型继承的两种方法对比介绍
- js原型链继承及调用父类方法
- JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)
- JS面向对象的继承三种方法:原型继承,原型冒充继承,复制继承
- 关于js原型继承
- 关于js oop,继承实现的5、6、7、8种方法中的最佳方法
- js对象、继承,原型链相关知识的复习及应用心得
- JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链