最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js原型对象和原型链的分析介绍(附代码)

来源:动视网 责编:小采 时间:2020-11-27 19:32:16
文档

js原型对象和原型链的分析介绍(附代码)

js原型对象和原型链的分析介绍(附代码):本篇文章给大家带来的内容是关于js原型和原型链的知识介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。先声明一个构造函数function People(name,age){ this.name = name; this.age = age; }把类的方法写在构
推荐度:
导读js原型对象和原型链的分析介绍(附代码):本篇文章给大家带来的内容是关于js原型和原型链的知识介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。先声明一个构造函数function People(name,age){ this.name = name; this.age = age; }把类的方法写在构


本篇文章给大家带来的内容是关于js原型和原型链的知识介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

先声明一个构造函数

function People(name,age){
 this.name = name;
 this.age = age;
 }

把类的方法写在构造函数原型对象中,子类就不能再通过调用父类构造函数来继承方法(属性还是可以继承)

// 给People的原型添加方法
People.prototype.speak = function(){
 console.log("我是"+this.name);
 }
// 创建子类继承People
function Man(name,age,huzi){
 People.call(this,name,age);
 this.huzi = huzi;
 }

(People和Man的属性和方法都可以输出和调用查看,代码里就不展示测试代码了)

这时候怎么让Man去继承People的方法?

Man.prototype = People.prototype;
 Man.prototype.smoke = function(){
 console.log("抽烟");
 }

然而这样并不对!不能直接把子类的prototype指向父类的prototype,这样会导致两个构造函数共用一个prototype,其中的方法父类子类的对象都可访问,而正确的情况应该是子类可以访问父类的方法,而父类不能访问子类的方法

js对象的原型也是对象,所以js原型也有原型.

当访问一个对象的方法时,如果对象中存在则直接访问,如果不存在则在对象的原型中寻找,有则访问,没有则在原型的原型中寻找,如果还没有则继续网上寻找,直到找到Object位置

Object是一个类(构造函数),这个类的对象的原型没有原型

js对象的原型,与js原型的原型组成的链式结构叫做js原型链

子类要继承父类的方法,则需要把子类的构造函数的prototype对象的原型(__proto__)设置为父类构造函数的prototype

那么就是这么写:

Man.prototype.__proto__ = People.prototype;

这样写可以,但官方给的有个更好标准的写法(这样写并没错)

// Object.create用于指定原型创建一个对象(空对象)
 Man.prototype = Object.create(People.prototype);
 Man.prototype.smoke = function(){
 console.log("抽烟");
 }

子类继承父类时,除了可以扩展新的方法,还可以重写父类已有的方法,当使用子类对象调用重写的方法时,会执行子类自己的方法

Man.prototype.speak = function(){
 console.log("我是男性");
 }

相关推荐:

JS核心系列:浅谈原型对象和原型链

js中的作用域链和原型链以及原型继承

js的原型及原型链详解

学习javascript面向对象 理解javascript原型和原型链_javascript技巧

文档

js原型对象和原型链的分析介绍(附代码)

js原型对象和原型链的分析介绍(附代码):本篇文章给大家带来的内容是关于js原型和原型链的知识介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。先声明一个构造函数function People(name,age){ this.name = name; this.age = age; }把类的方法写在构
推荐度:
标签: js 代码 对象
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top