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

标题: js中的继承 [打印本页]

作者: Adam丶鱼    时间: 2020-3-12 16:01
标题: js中的继承
那对继承,我是这么看的。咱们这个继承一般是针对父方法和子方法来说的,也就是说有两个方法,一个父方法,一个子方法。子方法可以拥有父方法的所有属性以及函数,那对于我们来说,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]) 数组


作者: Adam丶鱼    时间: 2020-3-12 16:02

作者: 张兴康    时间: 2020-3-12 17:40

作者: fteair    时间: 2020-3-13 14:05





欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://p.delit.cn/) Powered by Discuz! X3.2