JavaScript 中的继承(下)
需要注意的是,这种实现继承的方法不能将参数传入到ClassA的构造器中,是一个缺陷。ClassB的所有属性和方法必需在将ClassB的prototype对象指向ClassA的实例之后进行附值。这样做是因为,prototype指向一个新的对象,在此之前prototype的属性和方法都被覆盖销毁。 对代码进行测试: 在上述代码中可以看出,使用prototype实现继承,instanceof操作符出现了另外的用途,在用构造起定义类实现继承时,instanceof不会出现这种效果。但是使用prototype不能支持多重继承。 在《》和上文的论述中可以了解到,使用构造器定义类实现继承和使用prototype实现继承均存在各自的缺陷,要避免出现这些情况,只有将两者混合使用。 混合方法 《》一文中曾经论述,创建一个类的最佳方法,是使用构造器的方法去定义属性,使用prototype定义方法。在继承中同样如此。
发布日期:2021-10-01 08:44:34
浏览次数:2
分类:技术文章
本文共 1278 字,大约阅读时间需要 4 分钟。
作者: Prototype 在《》一文中,我们了解到任何prototype的属性和方法都会被传递到该类的所有实例中,利用这一特性,使用prototype也能实现继承。 function ClassA() { } ClassA.prototype.id = 1998 ; ClassA.prototype.sayId = function () { alert(this.id);} ; function ClassB() { } ClassB.prototype = new ClassA(); ClassB.prototype.name = "" ; ClassB.prototype.sayName = function () { alert(this.name);}
var obj1 = new ClassA(); var obj2 = new ClassB();obj1.id = 1998 ;obj2.id = 2000 ;obj2.name = " 悉尼奥运会 " ;obj1.sayId(); // 输出"1998" obj2.sayId(); // 输出"1998" obj2.sayName(); // 输出"悉尼奥运会" alert(obj2 instanceof ClassA); // 输出"true" alert(obj2 instanceof ClassB); // 输出"true"
function ClassA(id) { this .id = id;} ClassA.prototype.sayId = function () { alert(this.id);} ; function ClassB(id, name) { ClassA.call(this, id); this.name =name;} ClassB.prototype = new ClassA(); ClassB.prototype.sayName = function () { alert(this.name);}
转载地址:https://blog.csdn.net/iteye_263/article/details/81378565 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月16日 21时44分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Leetcode刷题篇】leetcode703 数据流中的第k大元素
2019-04-26
【Leetcode刷题篇】leetcode378 有序矩阵中第K小的元素
2019-04-26
【Leetcode刷题篇】前K个高频元素
2019-04-26
【Leetcode刷题篇】leetcode373 查找和最小的K对数字
2019-04-26
【Leetcode刷题篇】leetcode367 有效的完全平方数
2019-04-26
【Leetcode刷题篇】剑指offer-数值的整数次方
2019-04-26
【Leetcode刷题篇】面试题01.06 字符串压缩
2019-04-26
【Leetcode刷题篇】leetcode443 压缩字符串
2019-04-26
【面试篇】数据结构-线性表
2019-04-26
【面试篇】数据结构-树形结构
2019-04-26
【面试篇】数据结构-哈希表
2019-04-26
【Leetcode刷题篇】leetcode88 合并两个有序数组
2019-04-26
【Leetcode刷题篇】剑指offer51 数组中的逆序对
2019-04-26
【Leetcode刷题篇】剑指offer55-平衡二叉树
2019-04-26
【Leetcode刷题篇】leetcode98 判断一棵树是否为二叉搜索树
2019-04-26
Java中arraylist和数组的相互转换
2019-04-26
【Leetcode刷题篇 】leetcode147 对链表进行插入排序
2019-04-26
【Leetcode刷题篇】leetcode148 排序链表
2019-04-26
【面试篇】Java对象的hashCode()相同,equals()一定为true吗?
2019-04-26