关于prototype以及继承方面的理解
学习笔记(致 渐悟)
写在前面的话
今天看<javascript高级程序设计>的时候,看到有关继承和原型链prototype时遇到些疑问,特回来研究下,同时也感谢JS群网友"渐悟"的指导,非常感谢!
先给Demo,再说话
function Polygon(iSides) {
this.sides = iSides;
this.sex = "男";
this.getName = function () {
console.log("断桥残雪1");
};
}
Polygon.prototype.getName = function () {
console.log("断桥残雪2");
};
Polygon.prototype.getArea = function () {
return 0;
};
Polygon.prototype.sex = "man";
Polygon.age = 100; //三角形
function Triangle(iBase, iHeight) {
//Polygon.call(this, 3);
this.base = iBase;
this.height = iHeight;
this.getName = function () {
console.log("断桥残雪4");
};
} Triangle.prototype = new Polygon();
Triangle.prototype.getArea = function () {
return 0.5 * this.base * this.height;
};
Triangle.prototype.getName = function () {
console.log("wawawa");
}; var obj = new Triangle(2, 7);
//var area = obj.getArea();
obj.getName();
//console.log(area);
console.log(obj.age);
console.log(obj.sex);
测试后总结
- 新增prototype对象方法,只有其成员实例可以访问该方法,两者决然不同(这一句是废话,嘿嘿),例如:
A.prototype.Method=function(){ };
A.Method=function(){ }; - 原型链prototype可以利用其特殊性,变向的实现继承
- 类方法/对象方法/原型方法,三者在遇到以下实现时需要注意:
Triangle.prototype = new Polygon();
Triangle.prototype = Polygon.prototype;=> 第一行是将Polygon成员实例赋给Triangle的prototype,包括Polygon的对象属性、方法和原型属性、方法,不包括类属性、方法。
=> 第二行是将Polygon的prototype直接赋给Triangle的prototype,仅包括Polygon中prototype对象的属性和方法。 - 准确的来说,prototype不能完全实现继承,因为使用protype时是无法传递参数的。若要实现继承,更恰当的方式是用对象冒充的方式继承父类的属性(当然prototype也可以继承父类的属性,有局限),然后用原型链继承父类的方法。
- 当父类存在成员方法A,然后父类的原型链中也存在方法A,子类继承了父类,且子类也重写了成员方法A和prototype对象方法A,则他们的调用顺序优先级为:子类A() > 子类prototype对象方法A() > 父类成员方法A() > 父类prototype对象方法A()
结语
好了,今天后来有事儿去了,耽搁了,差点忘记了,要不然明天捂脸见你,说句实话我回来学习了下,也就知道这些了,希望你看到有错误不足啥的可以提出,谢谢!
今天身为程序员的班子,十一抢火车票,又用客户端App又用浏览器插件的,还是木有抢到票,啊啊啊......
关于prototype以及继承方面的理解的更多相关文章
- Inheritance and the prototype chain 继承和 原型 链
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain Inherita ...
- 关于JS对象原型prototype与继承,ES6的class和extends · kesheng's personal blog
传统方式:通过function关键字来定义一个对象类型 1234567891011 function People(name) { this.name = name}People.prototype. ...
- 对于js原型和原型链继承的简单理解(第三种,复制继承)
复制继承:简单理解,就是把父对象上的所有属性复制到自身对象上: function Cat(){ this.climb = function(){ alert("我会爬树"); } ...
- 谈谈javascript中的prototype与继承
谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性 ...
- JavaScript 对象的创建和对6种继承模式的理解和遐想
JS中总共有六种继承模式,包括原型链.借用构造函数.组合继承.原型式继承寄生式继承和寄生组合式继承.为了便于理解记忆,我遐想了一个过程,对6中模式进行了简单的阐述. 很长的一个故事,姑且起个名字叫 ...
- javascript中继承(二)-----借用构造函数继承的个人理解
本人目录如下: 零.寒暄&回顾 一,借用构造函数 二.事件代理 三,call和apply的用法 四.总结 零.寒暄&回顾 上次博客跟大家分享了自己对原型链继承的理解,想看的同学欢迎猛击 ...
- javascript中继承(一)-----原型链继承的个人理解
[寒暄]好久没有更新博客了,说来话长,因为我下定决心要从一个后台程序员转为Front End,其间走过了一段漫长而艰辛的时光,今天跟大家分享下自己对javascript中原型链继承的理解. 总的说来, ...
- 对于js原型和原型链继承的简单理解(第一种,原型链继承)
原型是js中的难点加重点,也是前端面试官最爱问的问题之一,因为面试官可以通过被面试者对原型的理解.来判断被面试者对js的熟悉程度. 原型的定义 Js所有的函数都有一个prototype属性,这个属性引 ...
- 【JavaScript】类继承(对象冒充)和原型继承__深入理解原型和原型链
JavaScript里的继承方式在很多书上分了很多类型和实现方式,大体上就是两种:类继承(对象冒充)和原型继承. 类继承(对象冒充):在函数内部定义自身的属性的方法,子类继承时,用call或apply ...
随机推荐
- XForms标准介绍
XForms标准是真正实现展现与模型分离的.与客户端无关的展现服务标准. 1.XForms标准 XForms是W3C组织所推荐的下一代在线展现服务标准(早在2003年10月14日就被W3C推荐),它吸 ...
- 让apache与mysql随着系统自动启动
让apache与mysql随着系统自动启动 在Linux中有一个文件/etc/rc.d/rc.local文件,其系统在启动时会自动加载该文件,我们可以把要启动的服务放入这个文件中即可. 添加以下代码:
- 济南学习 Day 2 T3 pm
它[问题描述]N个人坐成一圈,其中第K个人拿着一个球.每次每个人会以一定的概率向左边的人和右边的人传球.当所有人都拿到过球之后,最后一个拿到球的人即为胜者.求第N个人获胜的概率. (所有人按照编号逆时 ...
- 【风马一族_git_github】git与github的英文记录
Pull requests Issues Gist 请求 问题 要点 ---------------------------------------------------------------- ...
- 批处理bat命令--获取当前盘符和当前目录和上级目录
批处理bat命令--获取当前盘符和当前目录和上级目录 批处理命令获取当前盘符和当前目录%~d0 是当前盘符%cd% 是当前目录可以用echo %cd%进行打印测试 以下例子是命令行编译Visual S ...
- Silverlight形状、画笔、变换、图像处理、几何图形
1.形状(Ellipse.Line.Path.Polygon.Polyline 和 Rectangle) <UserControl x:Class="SharpStudy.MainPa ...
- h5 web模板
<!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --><html lang="zh-cmn-Hans"> ...
- Berkeley DB分布式探索
明天回家就没有网络,今晚就将整个编写过程记录下来.顺带整理思路以解决未能解决的问题. 标题有点托大,想将Berkeley DB做成分布式存储,感觉很高端的样子,实际上就是通过ssh将Berkeley ...
- mongodb学习之路1
第一节 MongoDB介绍及下载与安装 引言 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似 json的b ...
- php学习日志(5)-解决Windows Live Writer错误:WindowsLive.Writer.CoreServices.HttpRequestHelper的类型初始值设定发生异常
以前用Windows Live Writer写日志都好好的,前几天用写完日志,点击发布,突然弹出意外错误:“WindowsLive.Writer.CoreServices.HttpRequestHel ...