当前位置: 首页 > news >正文

网赢做网站怎么样做网站开视频网站

网赢做网站怎么样,做网站开视频网站,做网站导航按钮怎么猛,淘宝网站开发店铺什么类别文章の目录一、借助父构造函数继承属性1、实现方式2、优点3、缺点二、原型链继承1、实现方式2、优点3、缺点三、组合继承四、ES6继承的实现方式参考写在最后一、借助父构造函数继承属性 1、实现方式 先定义一个父构造函数(this指向为window);再定义一个子构造函数…

文章の目录

  • 一、借助父构造函数继承属性
    • 1、实现方式
    • 2、优点
    • 3、缺点
  • 二、原型链继承
    • 1、实现方式
    • 2、优点
    • 3、缺点
  • 三、组合继承
  • 四、ES6继承的实现方式
  • 参考
  • 写在最后


一、借助父构造函数继承属性

1、实现方式

  1. 先定义一个父构造函数(this指向为window);
  2. 再定义一个子构造函数(this指向为new出的实例化对象);
  3. 子构造函数通过call()、apply()、bind()等方式改变父的this指向继承父构造函数属性;
function Person(name) {this.name = name;this.song = function () {console.log("唱歌");};
}
Person.prototype.phone = function () {console.log("打电话"); // 继承不了
};
function Son(name) {Person.call(this, name); // apply bind
}
let zhangsan = new Son("张三");
console.log(zhangsan);
console.log(zhangsan.phone());

在这里插入图片描述

2、优点

避免了原型链继承的两个缺点,可以向父类传参,且不会造成原型属性共享的问题(因为父类构造函数中的属性继承到子类构造函数中,而非原型对象中)。

3、缺点

不能继承原型属性,无法实现函数复用,所有方法都只能放在构造函数中。

二、原型链继承

原型链是针对原型对象的,在查找实例属性时,先在实例中查找,如果没有找到,再到obj.__proto__(=f1.prototype)原型对象,再到f1.prototype.__proto__(=f2.prototype),依次向上查找。

1、实现方式

将Person实例化给Son的原型对象,再实例化Son赋值给变量son,打印结果可见son通过prototype指向Father函数,Father函数通过prototype指向Object对象,让Son来继承其中的属性。

function Person(name) {this.name = name;this.song = function () {console.log("唱歌");};
}
Person.prototype.phone = function () {console.log("打电话"); // 继承不了
};
function Son(name) {}
Son.prototype = new Person();
let zhangsan = new Son("张三");
console.log(zhangsan);
console.log(zhangsan.phone());

在这里插入图片描述

2、优点

能够继承构造函数属性,也能够继承原型属性。

3、缺点

  1. 首先属性值为引用类型值的原型属性被修改后可能会影响到所有的实例,并在此继承方式中,构造函数中的属性会继承到子类型,成为子类的原型对象的属性,这也是要在构造函数中定义属性,在原型中定义公共方法的原因。
  2. 在创建子类的实例时,不能向父类的构造函数中传递参数。

三、组合继承

组合继承(combination inheritance),也叫做伪经典继承,指的是将原型链和借用父构造函数组合到一块,其思路是用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又能够保证每个实例都有它自己的属性。

function Person(name) {this.name = name;this.song = function () {console.log("唱歌");};
}
Person.prototype.phone = function () {console.log("打电话"); // 继承不了
};
function Son(name) {this.price = "price";this.setScore = function () {};
}
Son.prototype = new Person();
Son.prototype.constructor = Son;
let zhangsan = new Son("张三");
console.log(zhangsan);
console.log(zhangsan.phone());

在这里插入图片描述

四、ES6继承的实现方式

通过关键字extends和super来实现

super特点

  • super只能在子类中使用,可以在constructor 及 函数或静态方法中使用
  • 不能单独使用super
  • super调用类似函数调用可以根据父类构造函数传参数
  • 如果子类中没有constructor,子类会自动调取super()且传入参数到父类
  • 子类中需要在调取super之后调用this
class Person {static height = "178cm";constructor(name) {this.name = name;}fn() {console.log("父类的fn");}
}
class Son extends Person {constructor(name) {super(name);this.age = 20;}fn() {// console.log(super);super.fn();console.log("子类fn");}
}
console.log(Son.height);
let zhangsan = new Son("张三");
console.log(zhangsan);
zhangsan.fn();

参考

  1. 总结JS继承的六种方式

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

http://www.yayakq.cn/news/394192/

相关文章:

  • 能从源代码黑进网站修改数据吗搜狗收录批量查询
  • 建设网站群开发网站如何赚钱
  • 在线玩的游戏网站wordpress后台打开缓慢
  • 做微商都去哪些网站留言建设工程教育网首页
  • 装饰公司响应式网站建设案例广州市重点公共建设项目官网
  • wordpress的网站怎么让他上线怎样把自己做的网页放在网站里
  • 网站公司技术交接网页设计在哪里接单
  • 俄语网站建设注意事项专业网站定制平台
  • 学校网站开发文档广州建筑集团网站
  • 萧县城乡建设局网站wordpress怎么采集
  • 软件最全的网站企业文化建设方案案例
  • 雪亮工程建设网站界面手工制作礼品盒
  • 网站设计美工排版编辑如何将自己做的网站上传
  • 网站做优化需要多少钱在龙港网站哪里做
  • 门户网站建设公司报价网站推广排名外包
  • 南宁码科网站建设网站怎么做赚钱
  • 网站推广如何做沈阳男科医院哪家好点儿
  • 响应式手机网站有哪些制作网站的公司
  • 广州网站开发网络公司网站模板名称
  • 排名好的昆明网站建设淘宝引流到微信推广方法
  • 做网站设计公司赚钱吗网站排名优化公司哪家好
  • 网站制作预付款会计分录wordpress图片本地化工具
  • 有网站了小程序怎么做赣州章贡区人口
  • 高端网站建设南京网站基础代码html
  • 网站建设技术方面的体会就业专项资金网站建设
  • 网站设计专业公司价格保定百度首页优化
  • 淘宝网站的建设目的外包加工网最新订单
  • 常熟建设银行 招聘网站网站建设与管理知识点
  • 容桂网站制作信息呼和浩特北京网站建设
  • 电脑做网站端口映射PHP网站建设项目经验