<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
/*function Person(){}
Person.prototype = {
name:123,
age:456,
}
var attributes2 = Object.keys(Person.prototype);
alert(attributes2);//name,age
var attributes3 = Object.getOwnPropertyNames(Person.prototype);
alert(attributes3);//name,age,constructor */ //直接通过对象字面量来重写整个原型对象(这种方法会改变原型对象的构造器)。原型对象和普通对象没什么差别。 先去自己对象里面找再去原型对象里面找,类似于先去子类找再去父类找。 // 简单原型
function Person(){}
Person.prototype = {
//constructor : Person , //prototype默认constructor是函数本身,没写defineProperty必须得表示原型对象的构造器,在枚举的时候构造器也会枚举出来,但是构造器是不能被枚举的,
name: 'z3' ,
age : 20 ,
job : '程序员' ,
say : function(){
alert('我是原型的函数!');
}
};
// ECMA5 给原型对象重新设置构造器的方法 Object.defineProperty();
// FF4+ ie8+ 才兼容ECMA5新特性
// 3个参数 参数1 :重设构造器的对象 参数2:设置什么属性 参数3:options配置项,配置项一般都是对象
Object.defineProperty(Person.prototype , 'constructor' , {
enumerable : false ,
value : Person
});//这样constructor就不能枚举了,上面的constructor : Person ,就可以不写了
var p1 = new Person();
alert(p1.name);
p1.say();
alert(Person.prototype.constructor); // Person // 枚举对象的keys
for( attr in p1){
alert(attr);
} ================================================================================= //原型的动态特性 实例对象必须在原型对象之后创建
function Person(){
}
var p1 = new Person();
Person.prototype.say = function(){alert('我是方法!')};
p1.say();//没问题,没有修改原型对象的地址,只是加属性
============================================================================= function Person(){
}
var p1 = new Person(); //开始 p1.__prpto__ === Person.prototype === 原型对象
Person.prototype = { //修改Person.prototype指向一个新对象
constructor : Person , //可以被枚举
say : function(){
alert('我是原型的函数!');
}
};
p1.say(); // error p1.__prpto__指向的先前的原型对象里面没有任何属性和方法
// 注意简单原型使用的顺序(实例对象必须在原型对象之后创建)
var p2 = new Person();
p2.say();
</script>
</head>
<body>
</body>
</html>

最新文章

  1. 【.net深呼吸】动态类型(娱乐篇)
  2. RabbitMQ 集群+负载均衡
  3. windows 共享文件夹 给 mac
  4. Java 复制文件的高效方法
  5. UX结合需求实例化进行设计开发
  6. Mac下Intellij IDea发布Java Web项目详解四 为所有Module配置Tomcat Deployment
  7. Emoji表情在网页中显示
  8. 使用Visual Studio 2010 创建简单的Silverlight应用程序
  9. linux(3)磁盘与文件系统管理/查看硬盘、内存空间/文件系统的操作/ 文件的压缩和打包
  10. 【JAVA零基础入门系列】Day9 Java中的那个大数值
  11. spring boot hello and docker
  12. ABP官方文档翻译 7.3 Quartz集成
  13. Scrapy爬虫框架补充内容三(代理及其基本原理介绍)
  14. JS引擎线程的执行过程的三个阶段(一)
  15. GP数据库 常用SQL语句
  16. 返回上一页面带数据 getCurrentPages 使用
  17. SecureCRT连接开发板 串口传输、tftp传输
  18. 二进制安装 kubernetes 1.12(一) - 安装 ETCD
  19. Codeforces 749D. Leaving Auction set+二分
  20. Easyui入门视频教程 第01集---认识Easyui

热门文章

  1. 制作自己的特色PE----Mr.Zhang
  2. rac_grid自检提示缺少pdksh-5.2包
  3. Windows系统时间同步出错解决办法(w32tm /register按回车,可能是为了解决时间COM注册的问题)
  4. 逆波兰表达式解数学运算(c#)
  5. Bundle捆绑压缩技术
  6. 为什么选择Sqoop1
  7. jquery表单动态添加元素及PHP处理
  8. C++ lambda表达式 (二)
  9. redis练习手册&lt;二&gt;快速入门
  10. IDEA全局更改统一编码为utf-8