<html>
<head>
<title>js inherit demo</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0" max-age="0">
</head>
<body>
<h4>js inherit demo</h4>
</body>
<script type="text/javascript"> //js有两种对象,一种是函数对象,一种是普通对象
//函数对象有__proto__和prototype两种属性,而普通对象只有__proto__属性
//js引擎基于__proto__的递归查找是所有js继承的核心!!!,因此也称为基于原型链的继承方式 /*
* 当创建一个function时,做了几件事情
* 1、创建了一个普通对象base
*- 2、创建了一个对应的原型变量@base
* 3、普通对象中的prototype指针指向原型变量
* 4、原型变量@base中的constructor指针(构造函数)指向base
*/
var base = function(){
base.prototype.name = 'hello';
this.password = 'fredric'; console.log('do base constructor');
} console.log(base.prototype.constructor == base); //true console.log(base.prototype);
console.log(base.__proto__); //此时b是一个object而非base
//普通对象只有__proto__属性指向其原型链
var b = new base(); //do constructor /*
* 1、创建一个空的obj
* 2、将__proto__绑定到对象的原型,即base.prototype
* 3、执行base函数
*/
b.age = 4;
console.log(b.__proto__ == base.prototype); //true
console.log(b.__proto__.name == b.name); //true
console.log(b.password);
//此时b本身没有name属性,于是js引擎会到b的__proto__里去找,如此往复,因此实现了继承的效果
//如下:b.__proto__.__proto__.name
console.log(b); //第二种继承的方式
var extend = function(){
console.log('do extend constructor');
}
console.log(extend.prototype.constructor == extend); //true //执行顺序如下:
//1. 创建一个空的obj赋值给extent.prototype
//2. extend.prototype.__proto__指向base.prototype
//3. 执行base函数,即打印do base constructor
extend.prototype = new base();
console.log(extend.prototype.__proto__ == base.prototype); //true var e = new extend(); console.log(e.__proto__ == extend.prototype); //true
console.log(e); </script> </html>

javascript面向对象理解的补充的更多相关文章

  1. Javascript 面向对象编程(补充):封装

    Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...

  2. 03.JavaScript 面向对象精要--理解对象

    JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...

  3. 深入理解Javascript面向对象编程

    深入理解Javascript面向对象编程 阅读目录 一:理解构造函数原型(prototype)机制 二:理解原型域链的概念 三:理解原型继承机制 四:理解使用类继承(继承的更好的方案) 五:建议使用封 ...

  4. JavaScript面向对象的理解

    JavaScript面向对象的理解  笔记链接: http://pan.baidu.com/s/1c0hivuS 1:JavaScript 中分两种对象,函数对象和普通对象new Function() ...

  5. JavaScript 面向对象的程序设计(一)之理解对象属性

    首先,JavaScript 面向对象的程序设计,主要分三部分. 理解对象属性: 理解并创建对象: 理解继承. 本文主要从第一方面来阐述: 理解对象属性 首先我们来理解Javascript对象是什么?在 ...

  6. javascript javascript面向对象的理解及简单的示例

    javascript面向对象的理解及简单的示例 零.本节重点: 1.封装: 2.继承: 壹.下面理解: 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的 ...

  7. 深入理解 JavaScript 面向对象

    我们在学习编程时,避免不了会接触一个概念,叫:面向对象编程(Object-oriented programming,缩写:oop) (不是搞对象那个对象哈),其实我们的编程方式,不止有面向对象,还有 ...

  8. 全方位深入理解JavaScript面向对象

    JavaScript面向对象程序设计 转载:https://blog.csdn.net/lihangxiaoji/article/details/79753473#72__871 本文会碰到的知识点: ...

  9. javascript面向对象个人理解

    1. javascript面向对象特性:抽象性,封装性,继承性: 2. js中的对象:键值对的集合:比如说{key:value} 3.抽象性:用一个对象描述一个数据,需要抽取这个对象的核心数据:两个必 ...

随机推荐

  1. 由HashMap哈希算法引出的求余%和与运算&转换问题

    1.引出问题 在前面讲解HashMap 的源码实现时,有如下几点: ①.初始容量为 1<<4,也就是24 = 16 ②.负载因子是0.75,当存入HashMap的元素占比超过整个容量的75 ...

  2. SpringMvc 这篇文章写得不错 多多学习2017.6.29

    http://www.cnblogs.com/bigdataZJ/p/springmvc1.html  博客园链接

  3. 理解Flexbox弹性盒子

    http://www.w3cplus.com/css3/understanding-flexbox-everything-you-need-to-know.html参考文档 1:要开始使用Flexbo ...

  4. 巩固java(三)---java修饰符

    正文:               下面的表格列出了java中修饰符的一些信息: 修饰符名称 类型 类 变量 方法 abstract 非访问控制符 抽象类          -- 抽象方法 final ...

  5. RabbitMQ (二)工作队列

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37620057 本系列教程主要来自于官网入门教程的翻译,然后自己进行了部分的修改与 ...

  6. SimpleXML系列函数操作XML

    创建SimpleXML对象 种方法来创建对象,分别是: l  Simplexml_load_file()函数,将指定的文件解析到内存中. l  Simplexml_load_string()函数,将创 ...

  7. python3 os模块的常用功能及方法总结

    1.os.getcwd()     #显示当前工作路径 2.os.listdir('dirname')    #返回指定目录下的所有文件和目录名 3.os.remove('filename')     ...

  8. selenium 定位元素成功, 但是输入失败 (textarea)

    问题描述 UI页面功能测试中, 定位元素并输入(通过sendKey()方法输入), 显示输入失败. 根本原因 为了修复一个bug, 这个元素从input改成了textarea, 而textarea是有 ...

  9. 查询订阅某topic的所有consumer group(Java API)

    在网上碰到的问题,想了下使用现有的API还是可以实现的. 首先,需要引入Kafka服务器端代码,比如加入Kafka 1.0.0依赖: Maven <dependency> <grou ...

  10. MYSQL一键安装

    #!/bin/bash #baishuchao qq:995345781 ############################################################### ...