js原型对象和原型链的分析介绍(附代码)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了js原型对象和原型链的分析介绍(附代码),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1959字,纯文字阅读大概需要3分钟。
内容图文
本篇文章给大家带来的内容是关于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原型对象和原型链的分析介绍(附代码)的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的js原型对象和原型链的分析介绍(附代码)全部内容,希望文章能够帮你解决js原型对象和原型链的分析介绍(附代码)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。