js:深入prototype(上:内存分析)
/**
* 下面演示了通过原型的创建方式,使用基于原型的创建能够将属性和方法
* 设置为Person专有的,不能通过window来调用。
* 原型是javascript中的一个特殊对象,当一个函数创建之后,会随之就产生一个原型对象
* 当通过这个这个函数的构造函数创建了一个详细的对象之后,在这个详细的对象中,就会有一个属性指向原型
*/
//第一种状态
function Person(){
}
//另外一种状态
Person.prototype.name = "octopus";
Person.prototype.age = 23;
Person.prototype.say = function(){
alert(this.name+":"+this.age);
}
//第三种状态
var p1 = new Person();
p1.say(); //octopus:23
say(); //say is not defined 通过window没有办法调用say方法,如此就完毕了封装
//检測p1是否有_prop_指向Person的原型
alert(Person.prototype.isPrototypeOf(p1)); //true
//第四种状态
var p2 = new Person();
p2.name = "Ada";
p2.say(); //Ada:23
//检測p1是否有_prop_指向Person的原型
alert(Person.prototype.isPrototypeOf(p1)); //true
//检測某个对象的constructor
alert(p1.constructor==Person); //true
//检測某个属性是否是自己的属性
alert(p1.hasOwnProperty("name")); //false p1自己的空间中没有值
alert(p2.hasOwnProperty("name")); //true p2在自己的空间中设置了name
//能够通过delete删除空间中的属性
delete p2.name;
p2.say(); //octopus:23
alert(p2.hasOwnProperty("name")); //false
//检測某个对象在原型或者自己中是否包括某个属性,通过 in 检測
alert("name" in p1); //true
alert("address" in p1); //false
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
原创文章如转载,请注明出处,本文首发于csdn站点:http://blog.csdn.net/magneto7/article/details/24913525
js:深入prototype(上:内存分析)的更多相关文章
- JS内存泄漏 和Chrome 内存分析工具简介(摘)
原文地址:http://web.jobbole.com/88463/ JavaScript 中 4 种常见的内存泄露陷阱 原文:Sebastián Peyrott 译文:伯乐在线专栏作者 - AR ...
- JS的prototype的共享机制分析
function Super(){ } Super.prototype.aaa=[1,2,3]; Super.prototype.bbb=1; function Sub(){ Super.call(t ...
- 深入理解js的prototype以及prototype的一些应用
上一篇讲了js的prototype概念,在这里回顾一下prototype的定义: prototype是函数的一个属性,并且是函数的原型对象.引用它的必然是函数,这个应该记住. 但是,很奇怪,各位看官, ...
- Chrome开发者工具之JavaScript内存分析
阅读目录 对象大小(Object sizes) 对象的占用总内存树 支配对象(Dominators) V8介绍 Chrome 任务管理器 通过DevTools Timeline来定位内存问题 内存回收 ...
- [转载]JavaScript内存分析
https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools/blob/master/md/Performance-Profiling/javasc ...
- Js面向对象和数据类型内存分配(转)
一 Js基本数据类型以及内存情况 1 Undefined Undefined类型只有一个值undefined,在使用了声明但未初始化的变量的时候,这个变量值就是undefined 1 var hi; ...
- js闭包和ie内存泄露原理
也议 js闭包和ie内存泄露原理 可以, 但小心使用. 闭包也许是 JS 中最有用的特性了. 有一份比较好的介绍闭包原理的文档. 有一点需要牢记, 闭包保留了一个指向它封闭作用域的指针, 所以, 在给 ...
- Chrome开发者工具之JavaScript内存分析(转)
尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝 ...
- 浅析JS中的堆内存与栈内存
最近跟着组里的大佬面试碰到这么一个问题, Q:说说var.let.const的区别 A:balabalabalabla... Q:const定义的值能改么? A:你逗我?不能吧 不知道各位看官怎么想? ...
- JS中的堆内存与栈内存
在js引擎中对变量的存储主要有两种位置,堆内存和栈内存. 和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean.Number.String.Undefined.Nul ...
随机推荐
- pip离线安装
pip freeze > requirements.txt pip download <packages> pip install --no-index --find-links=& ...
- 虚拟机 SUSE Linux Enterprise Server 12 SP2 64
下载地址:https://www.suse.com/zh-cn/products/server/download/ 下载以后使用虚拟机安装即可
- 20165301 2017-2018-2《Java程序设计》课程总结
20165301 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期待的师生关系 预备作业2:学习基础与c语言学习心得 预备作业3: Linux安装及命 ...
- gcc中C++一个特别的头文件
今天在一段程序中看到这样一个很奇怪的语句: #include<bits/stdc++.h> 博主查了之后发现业界称其万能头文件,这个头文件包含了如下等头文件,几乎包含了所有的C++标准库头 ...
- switch case语句
五.switch case语句 1.格式 Switch(表达式) { case 表达式:语句块 break: … default break: } 2.例题 输入年份.月份.日期,判断是否是闰年,并且 ...
- progressDialog和子线程模拟显示拷贝进度
package com.example.wang.myapplication; import android.app.ProgressDialog; import android.os.Bundle; ...
- Android Studio 升级为3.1 踩到的坑
原文:https://blog.csdn.net/xiariluoxue/article/details/80050700 AndroidStudio.gradle.buildToolsVersion ...
- CCF CSP 201403-3 命令行选项
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
- Java第三阶段学习(四、缓冲流)
一.缓冲流: Java中提供了一套缓冲流,它的存在,可提高IO流的读写速度 缓冲流,根据流的分类分为:字节缓冲流与字符缓冲流. 二.字节缓冲流: 字节缓冲流根据流的方向,共有2个: 1.写入数据到流中 ...
- CF474D. Flowers
D. Flowers time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input ...