度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 2013|回复: 4
打印 上一主题 下一主题

[分享] js中的继承

[复制链接]

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
跳转到指定楼层
楼主
发表于 2020-6-14 18:13:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那对继承,我是这么看的。咱们这个继承一般是针对父方法和子方法来说的,也就是说有两个方法,一个父方法,一个子方法。子方法可以拥有父方法的所有属性以及函数,那对于我们来说,js中常用的继承有3种。

第一种原型链继承:子对象他有一个默认属性是叫__proto__,他是指向这个方法本身,而方法本身他是不带父对象的方法或者属性的,所以他得调用他的prototype 的属性,这个prototype属性他又指向一个对象, 对象是子方法的原型,那么这个原型他又是用父方法实例化出来的,所以他又是他父对象的__proto__,这个__proto__又指向的父对象本身内个prototype,这个prototype 又调用他里面的 属性和方法,这样的话就是他的原型链继承。

例如:

function Parent(){

  this.name = 'mike';

  }

function Child(){

  this.age = 12;

  }

Child.prototype = new Parent();//Child继承Parent,通过原型,形成链条

obj.prototype == 对象.__proto__
var p = new per();
alert(p.__proto__==per.prototype) //true
per.prototype.__proto__


第二个叫构造函数继承, 构造函数继承最重要的一点就是冒充,父对象定义在子对象
里面,在子对象里面可以引用父对象的属性和方法,构造函数继承我感觉比较简单。

列如:

function myFun(){
this.name=
this.age=
this.show = function(){}

}

var obj1 = new myFun();
var obj2 new myFun();


再往后就是混合继承,那就是既有构造,又有原型,这样的一种继承方式。

例如:

function myFun(){
this.name
this.show=function(){alert(123)}
}
myFun.prototype.age=12
myFun.prototype.info = function(){alert(456)}
myFun.prototype={
name:"zhangsan",
age :18,
show:function(){}
}


这就是我对继承看法。
(call和apply之间的区别:两种方法虽然都是继承属性,但书写格式存在不同
这里call方法是通过this 后跟着一个字符串系列
而apply方法同样也是通过this 不过传属性则是由数组构成


call(this,name,age,str,demo) 字符串序列
apply(this,[name,age]) 数组

---恢复内容结束---

---恢复内容开始---

那对继承,我是这么看的。咱们这个继承一般是针对父方法和子方法来说的,也就是说有两个方法,一个父方法,一个子方法。子方法可以拥有父方法的所有属性以及函数,那对于我们来说,js中常用的继承有3种。

第一种原型链继承:子对象他有一个默认属性是叫__proto__,他是指向这个方法本身,而方法本身他是不带父对象的方法或者属性的,所以他得调用他的prototype 的属性,这个prototype属性他又指向一个对象, 对象是子方法的原型,那么这个原型他又是用父方法实例化出来的,所以他又是他父对象的__proto__,这个__proto__又指向的父对象本身内个prototype,这个prototype 又调用他里面的 属性和方法,这样的话就是他的原型链继承。

例如:

function Parent(){

  this.name = 'mike';

  }

function Child(){

  this.age = 12;

  }

Child.prototype = new Parent();//Child继承Parent,通过原型,形成链条

obj.prototype == 对象.__proto__
var p = new per();
alert(p.__proto__==per.prototype) //true
per.prototype.__proto__


第二个叫构造函数继承, 构造函数继承最重要的一点就是冒充,父对象定义在子对象
里面,在子对象里面可以引用父对象的属性和方法,构造函数继承我感觉比较简单。

列如:

function myFun(){
this.name=
this.age=
this.show = function(){}

}

var obj1 = new myFun();
var obj2 new myFun();


再往后就是混合继承,那就是既有构造,又有原型,这样的一种继承方式。

例如:

function myFun(){
this.name
this.show=function(){alert(123)}
}
myFun.prototype.age=12
myFun.prototype.info = function(){alert(456)}
myFun.prototype={
name:"zhangsan",
age :18,
show:function(){}
}


这就是我对继承看法。
(call和apply之间的区别:两种方法虽然都是继承属性,但书写格式存在不同
这里call方法是通过this 后跟着一个字符串系列
而apply方法同样也是通过this 不过传属性则是由数组构成


call(this,name,age,str,demo) 字符串序列
apply(this,[name,age]) 数组

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
沙发
 楼主| 发表于 2020-6-14 18:13:51 | 只看该作者
回复

使用道具 举报

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
板凳
 楼主| 发表于 2020-6-14 18:14:51 | 只看该作者
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
发表于 2020-6-17 14:43:08 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
5#
发表于 2020-6-18 09:31:07 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-12-23 02:16 , Processed in 0.129122 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表