关于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 ...
随机推荐
- eclipse下的Tomcat安装与web项目 搭建
Tomcat 安装 环境: win10-64位 apache-tomcat-7.0.57-windows-x64 首先要配置Windows 的环境变量 JAVA_HOME(就是Java的环境变量) ...
- java mail jar冲突
开发环境:jdk1.6.0_25 MyEclipse-8.6 J2EE5 程序编译通过,J2EE5的库里面已经含有javaee.jar文件.里面的javax.mail包下面是jav ...
- .NET清除Session 的几个方法[clear/removeAll/remove/Abandon]
1.clear() 清空所有session对象的值,但保留会话 2.removeAll() 调用clear()方法 3.remove("SessionName") 删除某个 ...
- POJ 1273(EK)
题目大概意思是,有N条水沟和M个水池,问从第一个水池到最后一个水池在同一时间内能够流过多少水第一行有两个整数N,M接下来N行,每行有3个整数,a,b,c,代表从a到b能够流c单位的水超级模板题,一个有 ...
- linux中的文件属性
l 是链接d 是目录c 是字符设备文件b 是块设备- 是文件
- 将json转为复杂url参数
//json转url参数 var parseParam = function(param, key) { var paramStr = ""; if (param instance ...
- cookie文件在电脑的保存位置
在Windows系统上(这里以Win7为例)浏览器的Cookie IE浏览器Cookie数据位于:%APPDATA%\Microsoft\Windows\Cookies\ 目录中的xxx.txt文件 ...
- iphone document 图片存储和读取
转载自:http://longquan.iteye.com/blog/1669990 存: //此处首先指定了图片存取路径(默认写到应用程序沙盒 中) NSArray *paths = NSSearc ...
- 一道关于比赛胜负的Sql查询题目
以前做过一道题目,一直没有来得及总结下来.贴图: 记得以前曾经找到了两种方法,今天试了一下,还是可以的,贴出过程: 下面是具体的查询方法: 原来放的是图片,今天又练习了一下,附代码: create T ...
- hexo-github 博客搭建
安装nodejs 从官网下载系统对应的源码 wget -qO- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | ...