js原型详解

1.内存模型:

1.原型是js中非常特殊一个对象,当一个函数(Person)创建之后,会随之就产生一个原型对象

2. 当通过这个函数的构造函数创建了一个具体的对象(p1)之后,在这个具体的对象中就会有一个属性指向原型

2.演示

以下演示了通过原型的创建方式,使用基于原型的创建可以将属性和方法
  设置为Person专有的,不能再通过window来调用,如此就完成了封装

 <script type="text/javascript">
function Person(){ } Person.prototype.name = "gui"; Person.prototype.age = 20; Person.prototype.say = function(){ alert(this.name+","+this.age); } var p1 = new Person(); p1.say();//gui,20 p1.name="gui22"; p1.say();//gui22,20
     //通过window没有办法调用say方法
say();

        var p2 = new Person();

        p2.say();//gui,20

</script>

【注】p1有自己的内存空间p1.name="gui22";只是改变了自己内存空间的name,并未触及原型中的name

3.下面是一些判断函数有助于理解原型图

//检测某个对象是否指向该函数的原型

// alert(Person.prototype.isPrototypeOf(p1));//true

//检测某个对象的constructor

//  alert(p1.constructor == Person);//true

//检测某个对象是否是自己的属性
        //alert(p1.hasOwnProperty("name"));//true,p1在自己的空间中设置了name属性
        //alert(p2.hasOwnProperty("name"));//false

//删除某个对象的某个属性
      //  delete p1.name;
       //  alert(p1.hasOwnProperty("name"));//false,由于已经删除了

//检测某个对象在原型或者自己中是否包含有某个属性,通过in检测

//alert("name" in p1);

//alert("name" in p2);

//alert("gender" in p1);//gender(性别),在原型和自己的空间中都没有,false

最新文章

  1. SSIS Execute SQL Task 用法
  2. 前端面试题之Html和CSS
  3. Redis各类型应用场景
  4. JSP简单标签开发
  5. 查看apk包名package和入口activity名称的方法
  6. [转]-Gradle使用手册(二):项目结构
  7. PJax在jQuery 3.0无法运行问题修复
  8. Java用DOM操作xml
  9. 二分 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D
  10. Java实现二叉树的前序、中序、后序遍历(递归方法)
  11. 广州图书馆借阅抓取——httpClient的使用
  12. golang从简单的即时聊天来看架构演变
  13. 使用sphinx制作接口文档并托管到readthedocs
  14. classPath与PATH
  15. “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (下)
  16. Postfix 邮件服务 - roundcube webmail
  17. MyBatis开发Dao层的两种方式(Mapper动态代理方式)
  18. CSS3设置内容超过一定长度后自动折行
  19. C# WPF 滚动字幕实现
  20. C++ primer(十三)--类继承、构造函数成员初始化、虚函数、抽象基类

热门文章

  1. C#高级编程42章 MVC
  2. java-设计原则
  3. 关于iphone设置显示模式为标准模式和放大模式时的区别
  4. ceph优化记录 ceph.conf优化详解
  5. php strip_tags()函数 语法
  6. 10.16 ln软硬链接的创建等
  7. delphi 异形窗体可半透明
  8. No orientation specified, and the default is horizontal.异常处理(转)
  9. Mac上VMWare Fusion配置多台cent os
  10. nRF51822 蓝牙低功耗和 2.4GHz 专利 SoC