详解原型链继承
来源:互联网 发布:手机淘宝电脑版在哪里 编辑:程序博客网 时间:2024/06/07 03:31
详解原型链继承
分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
/*
js没有类的概念,js的继承不是通过类的继承来实现的,而是通过”原型“的概念来完成的
*/
function tiger() {
this.bark = function() {
alert('我是百兽之王');
}
}
var hu = new tiger();
/*
以java为例,应该让tiger继承cat类,但是js中做不到
解决方法:对'tiger'函数指定,用某个具体的"cat"对象做老虎的原型,并创建”老虎对象“
*/
function cat() {
this.climb = function() {
alert('我会爬树');
}
}
var bosi = new cat();
//hu.climb();老虎不会爬树
//开始继承
tiger.prototype = new cat();
var hnhu = new tiger();
hnhu.climb();//我会爬树
//console.log(hnhu);
上面这个底层发生了:
1.构造空对象hnhu()
2.hnhu.bark = function () {}
3.hnhu.__proto__ = tiger.prototype(即cat对象)//这是继承的关键
使用console.log(hnhu);打印出来就能看到具体数据
this.climb = function() {
alert('我会爬树');
}
js没有类的概念,js的继承不是通过类的继承来实现的,而是通过”原型“的概念来完成的
*/
function tiger() {
this.bark = function() {
alert('我是百兽之王');
}
}
var hu = new tiger();
/*
以java为例,应该让tiger继承cat类,但是js中做不到
解决方法:对'tiger'函数指定,用某个具体的"cat"对象做老虎的原型,并创建”老虎对象“
*/
function cat() {
this.climb = function() {
alert('我会爬树');
}
}
var bosi = new cat();
//hu.climb();老虎不会爬树
//开始继承
tiger.prototype = new cat();
var hnhu = new tiger();
hnhu.climb();//我会爬树
//console.log(hnhu);
上面这个底层发生了:
1.构造空对象hnhu()
2.hnhu.bark = function () {}
3.hnhu.__proto__ = tiger.prototype(即cat对象)//这是继承的关键
使用console.log(hnhu);打印出来就能看到具体数据
this.climb = function() {
alert('我会爬树');
}
}
console.log(cat.prototype);//空对象,显示为cat的空对象
console.log(cat.prototype.constructor);//因为原型对象的constructor指向cat,所以显示cat对象
console.log(cat.prototype.__proto__);//空对象 object
console.log(cat.prototype.__proto__.__proto__);//null
当创建一个cat对象时,cat的prototype会指向一个默认原型(空对象),然后默认原型的contruct会指向cat对象(,使用console.log(cat.prototype.constructor)),默认原型的object最终指向null
注意:函数是使用prototype指向对象,而对象则是使用__proto__指向对象
老虎是如何爬树的?
老虎先在自身对象上寻找,没有爬树方法,然后就去找原型,原型cat对象上有此方法,就调用climb()方法
上图的流程:
对象->原型->原型的原型->Object对象->NULL
对象的属性和方法,就是沿着原型链来查找和调用的
0 0
- 详解原型链继承
- 详解原型链继承
- 原型-原型链-继承
- JS:原型、原型链、继承
- 原型和原型链继承
- Javascript中的原型继承详解
- javascript 继承与原型继承用法详解
- 【JS】原型链继承
- 继承与原型链
- javascript原型链继承
- javascript原型链继承
- JavaScript:原型链、继承
- 原型链与继承
- 原型链的继承
- js原型链继承
- 继承与原型链
- javascript 原型链继承
- 继承与原型链
- Java容易忽略的几个知识点!!!
- 【洛谷P3372】【模板】线段树 1
- POJ 3211 Washing Clothes(01背包)@
- SSH 小技巧大全
- AndroidStudio的使用技巧
- 详解原型链继承
- Java中无返回值的return语句使用总结
- 自考、起航!
- Leetcode #8 String to Integer (atoi)
- volatile关键字浅析
- 解决Windows下Python程序读取中文文件
- JMS简介与ActiveMQ实战
- [Win32]一个调试器的实现(四)读取寄存器和内存
- 关于ajax