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(上:内存分析),布布扣,bubuko.com

时间: 2024-10-13 16:06:15

js:深入prototype(上:内存分析)的相关文章

09 js函数调用过程内存分析、js函数细节

函数的调用过程 Js函数调用过程的内存分析. 一个递归调用的例子: <html> <head> <script> //abc是一个函数它接收一个数值 function abc(num1){ if (num1>3) { abc(--num1); //递归 } document.writeln(num1); } abc(5); </script> </head> <body> </body> </html>

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

原文地址:http://web.jobbole.com/88463/ JavaScript 中 4 种常见的内存泄露陷阱 原文:Sebastián Peyrott 译文:伯乐在线专栏作者 - ARIGATO 链接:http://web.jobbole.com/88463/ 点击 → 了解如何加入专栏作者 了解 JavaScript 的内存泄露和解决方式! 在这篇文章中我们将要探索客户端 JavaScript 代码中常见的一些内存泄漏的情况,并且学习如何使用 Chrome 的开发工具来发现他们.读

Android内存分析和调优(上)

Android内存分析和调优(上) Android内存分析工具(四):adb命令

Js中Prototype、__proto__、Constructor、Object、Function关系介绍

Js中Prototype.__proto__.Constructor.Object.Function关系介绍 一    Prototype.__proto__与Object.Function关系介绍        Function.Object:Js自带的函数对象. prototype,每一个函数对象都有一个显示的prototype属性,它代表了对象的原型(Function.prototype函数对象是个例外,没有prototype属性). __proto__:每个对象都有一个名为__proto

Js中Prototype、__proto__、Constructor、Object、Function关系介绍 ,JS原型

此文来自:http://www.blogjava.net/heavensay/archive/2013/10/20/405440.html Js中Prototype.__proto__.Constructor.Object.Function关系介绍 一    Prototype.__proto__与Object.Function关系介绍        Function.Object:Js自带的函数对象. prototype,每一个函数对象都有一个显示的prototype属性,它代表了对象的原型(

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

上一篇讲了js的prototype概念,在这里回顾一下prototype的定义: prototype是函数的一个属性,并且是函数的原型对象.引用它的必然是函数,这个应该记住. 但是,很奇怪,各位看官,你有没有看过类似下面这样引用prototype的js代码: function func(){ var args = Array.prototype.slice.call(arguments, 1); return args; } 咦???看着上面这行代码,你是不是对prototype只是属于函数产生

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

内存泄漏是指计算机可用内存的逐渐减少.当程序持续无法释放其使用的临时内存时就会发生.JavaScript的web应用也会经常遇到在原生应用程序中出现的内存相关的问题,如 泄漏和溢出,web应用也需要应对 垃圾回收停顿. 尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝试一下相关案例以提高你对这些工具在实践中如何工作的认识.请阅读 内存 101(M

Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次更新已经比较久了^_^! formidable简介 nodejs原生实现上传还是比较麻烦,有兴趣的自已去参考一下网上有网友写的代码 这里选择了formidable,也是githu

深刻理解下js的prototype

参考 http://aralejs.org/class/docs/competitors.html, http://www.iteye.com/topic/248933,http://www.cnblogs.com/qiantuwuliang/archive/2011/01/08/1930548.html 1.使用Dog.prototype.__proto__ ? 1 2 3 4 5 6 7 8 9 10 11 function Animal() {} function Dog() {} //