/**

 * 下面演示了通过原型的创建方式,使用基于原型的创建能够将属性和方法

 * 设置为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(上:内存分析)的更多相关文章

  1. JS内存泄漏 和Chrome 内存分析工具简介(摘)

    原文地址:http://web.jobbole.com/88463/ JavaScript 中 4 种常见的内存泄露陷阱   原文:Sebastián Peyrott 译文:伯乐在线专栏作者 - AR ...

  2. JS的prototype的共享机制分析

    function Super(){ } Super.prototype.aaa=[1,2,3]; Super.prototype.bbb=1; function Sub(){ Super.call(t ...

  3. 深入理解js的prototype以及prototype的一些应用

    上一篇讲了js的prototype概念,在这里回顾一下prototype的定义: prototype是函数的一个属性,并且是函数的原型对象.引用它的必然是函数,这个应该记住. 但是,很奇怪,各位看官, ...

  4. Chrome开发者工具之JavaScript内存分析

    阅读目录 对象大小(Object sizes) 对象的占用总内存树 支配对象(Dominators) V8介绍 Chrome 任务管理器 通过DevTools Timeline来定位内存问题 内存回收 ...

  5. [转载]JavaScript内存分析

    https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools/blob/master/md/Performance-Profiling/javasc ...

  6. Js面向对象和数据类型内存分配(转)

    一 Js基本数据类型以及内存情况 1 Undefined Undefined类型只有一个值undefined,在使用了声明但未初始化的变量的时候,这个变量值就是undefined 1 var hi; ...

  7. js闭包和ie内存泄露原理

    也议 js闭包和ie内存泄露原理 可以, 但小心使用. 闭包也许是 JS 中最有用的特性了. 有一份比较好的介绍闭包原理的文档. 有一点需要牢记, 闭包保留了一个指向它封闭作用域的指针, 所以, 在给 ...

  8. Chrome开发者工具之JavaScript内存分析(转)

    尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝 ...

  9. 浅析JS中的堆内存与栈内存

    最近跟着组里的大佬面试碰到这么一个问题, Q:说说var.let.const的区别 A:balabalabalabla... Q:const定义的值能改么? A:你逗我?不能吧 不知道各位看官怎么想? ...

  10. JS中的堆内存与栈内存

    在js引擎中对变量的存储主要有两种位置,堆内存和栈内存. 和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean.Number.String.Undefined.Nul ...

随机推荐

  1. Ubuntu下使用Nginx+uWSGI+Flask(初体验)

    Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...

  2. scala tuple中的syntactic sugar

    List[Tuple2[String, Int]] // Base List[(String, Int)] // Syntactic sugar List[Tuple3[String, Float, ...

  3. 简单的UDP接受程序

    //功能:客服端发送UDP包,服务器接受到并打印出来//2015.9.13成功 #include <stdio.h>#include <sys/socket.h>#includ ...

  4. ThinkPHP联表查询

    $list = db($pnav['ename']) -> field('a.*,b.name as pname') ->alias('a') -> join('sbl_nav b' ...

  5. IntelliJ IDEA 修改IDE字体、代码字体。

    IntelliJ IDEA 默认的 IDE 菜单字体太小,看着不舒服 ,我们调节下: ==============以上修改 仅仅针对的IDE字体,对代码的字体不生效. 所以如果代码 你觉得小 还得修改 ...

  6. Python学习笔记:import sys模块(argv、path、platform、exit)

    sys模块是Python标准库中自带的一个模块. sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与当前程序之外的系统环境交互,如:Pyth ...

  7. ****jQuery - 设置HTML内容和属性

    设置内容 - text().html() 以及 val() 我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容( ...

  8. 第六届CCF软件能力认证

    1.数位之和 问题描述 给定一个十进制整数n,输出n的各位数字之和. 输入格式 输入一个整数n. 输出格式 输出一个整数,表示答案. 样例输入 20151220 样例输出 13 样例说明 201512 ...

  9. JavaScript中的数据结构及实战系列

    本系列主要是讲解JavaScript中的数据结构及在实际项目中遇到的地方 JavaScript中的数据结构及实战系列(1):队列 JavaScript中的数据结构及实战系列(2):栈

  10. 面试题49:把字符串转换成整数(atoi)

    需要考虑的问题都已在程序中注释 bool isValid; int StrToInt(const char* str) { isValid = false; //不合法情形1:空指针 if (str ...