JS的prototype的共享机制分析
function Super(){
}
Super.prototype.aaa=[1,2,3];
Super.prototype.bbb=1;
function Sub(){
Super.call(this);
}
Sub.prototype=new Super();
Sub.prototype.constructor=Sub;
var a=new Sub();
var b=new Sub();
a.bbb=5; //当这句话执行的时候,并不是操作prototype上的bbb,而是给a对象添加了一个bbb属性
alert(a.bbb); //这里弹出的是刚才添加的bbb属性,因为已经找到刚才添加的了,所以不会在prototype上找了
delete a.bbb; //删除了刚才添加的bbb属性
alert(a.bbb); //这下就能弹出prototype上的bbb了
a.aaa[0]=5; //而这句话就不一样了,并不是创建aaa属性,而是修改prototype上的aaa[0]。通过语法可以看出
alert(b.aaa[0]); //那么b对象也会受影响,会弹出5
a.aaa=[]; //而这里也是创建了一个aaa属性,并不会修改prototype的aaa
alert(b.aaa[1]); //不会受到上一句的影响,会弹出prototype上的aaa[0]即数字2
a.aaa[0]=9; //这里也不一样了,因为上面在a对象上直接创建了个aaa数组,所以是修改的上面刚创建的aaa,而不是prototype上的
alert(a.aaa[0]); //这里会弹出9
alert(b.aaa[0]); //这里会弹出5
JS的prototype的共享机制分析的更多相关文章
- 分布式session共享机制分析
使用配置: 1.在pom文件中引入spring-session的jar包 <!--springsession--><dependency><groupId>org. ...
- linux下的KSM内存共享机制分析
2017-04-26 KSM是内核中的一种内存共享机制,在2.6.36版本的内核中开始引入,简单来说就是其会 合并某些相同的页面以减少页面冗余.在内核中有一个KSM守护进程 ksmd,它定期扫描用户向 ...
- 深入理解js的prototype以及prototype的一些应用
上一篇讲了js的prototype概念,在这里回顾一下prototype的定义: prototype是函数的一个属性,并且是函数的原型对象.引用它的必然是函数,这个应该记住. 但是,很奇怪,各位看官, ...
- Android内存机制分析1——了解Android堆和栈
//----------------------------------------------------------------------------------- Android内存机制分析1 ...
- Linux内核态抢占机制分析(转)
Linux内核态抢占机制分析 http://blog.sina.com.cn/s/blog_502c8cc401012pxj.html 摘 要]本文首先介绍非抢占式内核(Non-Preemptive ...
- es6 Promise 事件机制分析
最近在学习es6的Promise,其中涉及到了Promsie的事件执行机制,因此总结了关于Promise的执行机制,若有错误,欢迎纠错和讨论. 在阮一峰老师的书中<es6 标准入门>对Pr ...
- Android内存机制分析2——分析APP内存使用情况
上面一篇文章说了Android应用运行在dalvik里面分配的堆和栈内存区别,以及程序中什么代码会在哪里运行.今天主要是讲解一下Android里面如何分析我们程序内存使用情况.以便后续可以分析我们程序 ...
- Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL
Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL http://www.ibm.com/developerworks/c ...
- Linux kernel workqueue机制分析
Linux kernel workqueue机制分析 在内核编程中,workqueue机制是最常用的异步处理方式.本文主要基于linux kernel 3.10.108的workqueue文档分析其基 ...
随机推荐
- Oracle top N实现
在Oracle中实现select top N:由于Oracle不支持select top 语句,所以在Oracle中经常是用order by 跟rownum的组合来实现select top n的查询. ...
- Cisco IOS Debug Command Reference I through L
debug iapp through debug ip ftp debug iapp : to begin debugging of IAPP operations(in privileged EXE ...
- Android开发-略讲adb命令和SQLite数据库运用
adb.exe ADB -Android Debug Bridge, 是 Android sdk 里的一个工具,用这个工具可以直接操作管理 Android 模拟器或者真实的 Android 设备 简 ...
- 在MongoDB中实现聚合函数 (转)
随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的 ...
- 获取hadoop的源码和通过eclipse关联hadoop的源码
一.获取hadoop的源码 首先通过官网下载hadoop-2.5.2-src.tar.gz的软件包,下载好之后解压发现出现了一些错误,无法解压缩, 因此有部分源码我们无法解压 ,因此在这里我讲述一下如 ...
- 《day17_String_StringBuffer》
package cn.itcast.api.string; public class StringDemo{ public static void main(String[] args){ //定义一 ...
- 云计算平台简介(App Engine)
云计算平台简介(App Engine) 1 简介 App Engine: 应用程序引擎,是托管网络应用程序的云计算平台. 1.1 什么是云 云计算通常简称为“云”,是一种通过 Inter ...
- 算法导论 第六章 思考题 6-3 d叉堆
d叉堆的实现相对于二叉堆变化不大,首先看它如何用数组表示. 考虑一个索引从1开始的数组,一个结点i最多可以有d个子结点,编号从id - (d - 2) 到 id + 1. 从而可以知道一个结点i的父结 ...
- Mifare Classic Tool(MCT)汉化版
2.0.4 到 2.0.6的更改: 注意:本汉化版本可能不稳定,与此发生的一切后果与作者和汉化者无关. Version : * Bugfix: Fixed crash which occurred i ...
- flex css 布局
http://www.w3cplus.com/css3/flexbox-basics.html