关于prototype以及继承方面的理解
来源:互联网 发布:南京海关数据分中心 编辑:程序博客网 时间:2024/06/01 10:41
学习笔记(致 渐悟)
写在前面的话
今天看<javascript高级程序设计>的时候,看到有关继承和原型链prototype时遇到些疑问,特回来研究下,同时也感谢JS群网友"渐悟"的指导,非常感谢!
先给Demo,再说话
1 function Polygon(iSides) { 2 this.sides = iSides; 3 this.sex = "男"; 4 this.getName = function () { 5 console.log("断桥残雪1"); 6 }; 7 } 8 Polygon.prototype.getName = function () { 9 console.log("断桥残雪2");10 };11 Polygon.prototype.getArea = function () {12 return 0;13 };14 Polygon.prototype.sex = "man";15 Polygon.age = 100;16 17 //三角形18 function Triangle(iBase, iHeight) {19 //Polygon.call(this, 3);20 this.base = iBase;21 this.height = iHeight;22 this.getName = function () {23 console.log("断桥残雪4");24 };25 }26 27 Triangle.prototype = new Polygon();28 Triangle.prototype.getArea = function () {29 return 0.5 * this.base * this.height;30 };31 Triangle.prototype.getName = function () {32 console.log("wawawa");33 };34 35 36 var obj = new Triangle(2, 7);37 //var area = obj.getArea();38 obj.getName();39 //console.log(area);40 console.log(obj.age);41 console.log(obj.sex);
测试后总结
- 新增prototype对象方法,只有其成员实例可以访问该方法,两者决然不同(这一句是废话,嘿嘿),例如:
1 A.prototype.Method=function(){ };2 A.Method=function(){ };
- 原型链prototype可以利用其特殊性,变向的实现继承
- 类方法/对象方法/原型方法,三者在遇到以下实现时需要注意:
1 Triangle.prototype = new Polygon();2 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又用浏览器插件的,还是木有抢到票,啊啊啊......
0 0
- 关于prototype以及继承方面的理解
- 关于Java学习中继承知识方面的一些理解
- 关于prototype的理解
- 关于程序方面的理解
- 不错的一篇关于javascript-prototype继承
- 深入理解js的prototype以及prototype的一些应用
- 关于继承的理解
- 关于javascript-prototype继承
- 关于__proto__和prototype的理解
- 关于js中prototype的理解
- 关于__proto__和prototype的一些理解
- 关于JS中prototype的理解
- 关于__proto__和prototype的一些理解
- javascript中原型继承(prototype inherit)的理解
- 对象初始化过程和关于继承方面的自我总结
- 关于php面向对象继承方面的几点总结
- javascript的prototype继承
- javascript的prototype继承
- 实现天气预报功能
- 弱弱的玩下Javascript
- 周末了 找个网页特效练练手
- 关于StringBuilder
- 解决asp.net mvc中*.resx资源文件访问报错
- 关于prototype以及继承方面的理解
- 前端学习笔记汇总(之merge方法)
- 使用NodeJs,实现数据抓取
- 迭代器的基本使用
- Guibs 的 Python 学习_变量
- Maven Compilation Error:No compiler is provided...you are running on a JRE rather than a JDK
- EventBus粘性事件
- 成长点滴
- SparkContext主要组成部分