学习笔记(致 渐悟)

写在前面的话

今天看<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以及继承方面的理解的更多相关文章

  1. Inheritance and the prototype chain 继承和 原型 链

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain Inherita ...

  2. 关于JS对象原型prototype与继承,ES6的class和extends · kesheng's personal blog

    传统方式:通过function关键字来定义一个对象类型 1234567891011 function People(name) { this.name = name}People.prototype. ...

  3. 对于js原型和原型链继承的简单理解(第三种,复制继承)

    复制继承:简单理解,就是把父对象上的所有属性复制到自身对象上: function Cat(){ this.climb = function(){ alert("我会爬树"); } ...

  4. 谈谈javascript中的prototype与继承

    谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性 ...

  5. JavaScript 对象的创建和对6种继承模式的理解和遐想

      JS中总共有六种继承模式,包括原型链.借用构造函数.组合继承.原型式继承寄生式继承和寄生组合式继承.为了便于理解记忆,我遐想了一个过程,对6中模式进行了简单的阐述. 很长的一个故事,姑且起个名字叫 ...

  6. javascript中继承(二)-----借用构造函数继承的个人理解

    本人目录如下: 零.寒暄&回顾 一,借用构造函数 二.事件代理 三,call和apply的用法 四.总结 零.寒暄&回顾 上次博客跟大家分享了自己对原型链继承的理解,想看的同学欢迎猛击 ...

  7. javascript中继承(一)-----原型链继承的个人理解

    [寒暄]好久没有更新博客了,说来话长,因为我下定决心要从一个后台程序员转为Front End,其间走过了一段漫长而艰辛的时光,今天跟大家分享下自己对javascript中原型链继承的理解. 总的说来, ...

  8. 对于js原型和原型链继承的简单理解(第一种,原型链继承)

    原型是js中的难点加重点,也是前端面试官最爱问的问题之一,因为面试官可以通过被面试者对原型的理解.来判断被面试者对js的熟悉程度. 原型的定义 Js所有的函数都有一个prototype属性,这个属性引 ...

  9. 【JavaScript】类继承(对象冒充)和原型继承__深入理解原型和原型链

    JavaScript里的继承方式在很多书上分了很多类型和实现方式,大体上就是两种:类继承(对象冒充)和原型继承. 类继承(对象冒充):在函数内部定义自身的属性的方法,子类继承时,用call或apply ...

随机推荐

  1. java中从1000万个随机数中查找出相同的10万个随机数花的最少时间

    偶然在群里看到有人问到大数据查询,自己也就想了小艾改如何解决,从从1000万个随机数中查找出相同的10万个随机数花的最少时间, 谈到效率,自然是hashmap莫属. import java.util. ...

  2. 分享10款功能强大的HTML5/CSS3应用插件

    1.纯CSS3美化Checkbox和Radiobox按钮 外观很时尚 利用CSS3我们可以打造非常具有个性化的用户表单,今天我们就利用CSS3美化Checkbox复选框和Radiobox单选框.CSS ...

  3. Php 与 Json

    PHP与JSON 在PHP中存在两个与JSON相关的函数: json_encode($array或$object)函数:把一个数组或对象转化为JSON格式的字符串 json_decode($json, ...

  4. AutoEventWireup="false"

    在 Web 服务器控件中,某些事件(通常是 Click 事件)会导致窗体被回发到服务器.HTML 服务器控件和 Web 服务器控件(如 TextBox 控件)中的更改事件将被捕获,但不会立即导致发送. ...

  5. C89 和 C99的标准比较

    本文转载自: C89和C99标准比较  原文转载自: http://blog.programfan.com/article.asp?id=14051  http://blog.csdn.net/xgb ...

  6. 用户输入内容转换成Pig Latin形式。

    //(单词的第一个元音字母之前的一道单词后面,以"ay"结尾,英语单词首字母为元音字母或者没有元音字母的以“ay”为后缀.)package toPigLatin; import j ...

  7. 火狐谷歌浏览器Json查看插件

    1.搜: Firefox的JSON插件 参考: Chrome/FireFox浏览器下处理JSON的插件_Bruce_新浪博客 JSONView :: Firefox 附加组件 但是后来去发现没用: 打 ...

  8. 如何解决win7系统访问共享服务器慢的问题

    最近重新装了win7系统,但发现当访问共享服务器的时候很慢,后来在网上搜索了相关解决办法,在此和大家分享下: 1. 通过“windows键”+“R键”快捷打开“运行”窗口,然后输入cmd命令敲回车,进 ...

  9. JQuery window.opener

    $('#Save').click(function () {    var parent = $(parent.document.body);    $(parent).find('input#add ...

  10. LiteHttp:一款‘智能’的HTTP框架类库

    LiteHttp:一款‘智能’的HTTP框架类库(转自github) 简介 LiteHttp是一款简单.智能.灵活的HTTP框架库,它在请求和响应层面做到了全自动构建和解析,主要用于Android快速 ...