1 //简单重写原型对象:
 2
 3 //一个构造函数Person
 4 function Person(){
 5
 6 }
 7 //重写Person的原型
 8 //把Person的原型赋值给一个新的对象 是我们重写的过程
 9 Person.prototype={
10     // 对于构造器 如果我们不给他写,则构造器就是Object的构造器了
11 constructor:Person, //加上构造器属性 这里有一点问题 因为构造器属性是不可枚举的,这里无法设置
12 name:"张三",
13     sayName:function(){
14         alert(this.name);
15     }
16 };
17
18 var p1 = new Person();
19 alert(Person.prototype.constructor);
20
21 /*
22     以上我们认为模拟重写了一个构造函数的原型
23     但是有很多问题。构造器是不可枚举的,在这里我们无法实现不可枚举属性。
24
25     在js中提供Object.defineProperty(对象,属性,配置) 来实现设置属性的一些性质
26     重写一个原型就可以这样实现:
27 * */
28 Object.defineProperty(
29     Person.prototype ,     //要配置的对象
30 "constructor",    //配置对象的构造器 构造器
31 {        //构造器的特性
32     enumerable :false,    //构造器 不可枚举
33     value : Person    //构造器的值是Person
34     }
35 );
36 // 通过以上方式重写 就把构造器设置成不可枚举了
37 var p2 = new Person();
38 for(attr in p2){
39     alert(attr);
40 }
41
42 /*
43     注意:由于语言的动态性
44
45         在实例化对象之后 如果给原型添加属性或方法,实际上实例对象是能调用后添加的属性和方法
46         实例化之后 重写原型,实际上实例的原型还是指向原来的原型对象 不是新的原型对象
47 */
48 function Person(){
49
50 }
51 var p1 = new Person();
52 Person.prototype.name="哈哈";
53 alert(p1.name);    //哈哈  因为p1的原型引用调用之前已经添加属性 可以使用
54
55 var p2 = new Person();
56 Person.prototype = {
57     constructor : Person,
58     name:"xixi"
59 };
60 alert(p2.name);    //哈哈,实例对象之后改变构造器的原型,实例的对象的原型还指向原来的
61
62 var p3 = new Person();
63 alert(p3.name);    //xixi  因为这是在改变构造器原型之后的实例对象

转载于:https://www.cnblogs.com/Lin-Yi/p/7439987.html

JavaScript简单重写构造器的原型相关推荐

  1. 进击的 JavaScript 之(七) 原型链

    原文链接:周大侠啊 进击的 JavaScript (七) 之 原型链 算是记录一下自己的学习心得吧,哈哈 首先说一下,函数创建的相关知识 在JavaScript中,我们创建一个函数A(就是声明一个函数 ...

  2. 043_对象构造器和原型

    1. 对象类型(蓝图)(类) 1.1. 通过文本和new Object()的方式, 我们只能创建单一对象. 1.2. 有时我们需要创建相同"类型"的许多对象的"蓝图&qu ...

  3. Javascript中的对象和原型(一)(转载)

    面向对象的语言(如Java)中有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,JavaScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 要了解面向对象,首 ...

  4. JavaScript 变量、函数与原型链

    定义 || 赋值 1-函数的定义 函数定义的两种方式: "定义式"函数:function fn(){ alert("哟,哟!"); } "赋值式&qu ...

  5. 通过JavaScript简单的操作DOM(一)

    通过JavaScript简单的操作DOM (一)简单的前提概念 1.DOM简介 DOM,文档对象模型.描述了HTML和XML文档结构,然后提供API,来帮助开发人员添加.删除.修改页面的某一部分. ( ...

  6. html判断用户名的合法性,javascript简单判断输入内容是否合法的方法

    本文实例讲述了javascript简单判断输入内容是否合法的方法.分享给大家供大家参考,具体如下: 关于检测用户输入的内容是否有非法的字符检测实现思路 1.定义合法的字符串(源字符串) 2.获取用户输 ...

  7. 利用Html,Css,javaScript简单写一个计算一天秒的倒计时

    利用Html,Css,javaScript简单写一个计算一天还剩多少秒的倒计时页面 代码我放下面,不多,就是我那个背景图我没有用精灵图,主要拼接太麻烦了,我直接img了,然后display:none; ...

  8. JavaScript简单版计算器

    JavaScript简单版计算器 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  9. 简单下拉菜单html,JavaScript简单下拉菜单实例代码

    本文实例讲述了JavaScript简单下拉菜单实例代码.分享给大家供大家参考.具体如下: 这是一款JavaScript实现的下拉菜单演示代码,带渐变效果的CSS+jQuery菜单,向下滑出型的菜单,最 ...

最新文章

  1. 打印http地址打印双斜杠
  2. MyPython--进阶篇--异常
  3. python 异步io_python之同步IO和异步IO
  4. C语言学习之编写一个C程序,运行时输人abc三个值,输出其中值最大者。
  5. 阿里云实时计算,前世功,今生能!
  6. WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)
  7. DenyHosts教程:防暴力破解SSH密码
  8. jsp+tomcat程序helloworld
  9. Java 自动装箱与拆箱
  10. 统计学习方法概论---分类问题
  11. debug和release的区别
  12. RN-android 打包后,部分图片不显示
  13. 铁乐学python_day02-作业
  14. Visual Studio(Year)编辑器调试在IIS发布的Web程序出现错误的解决
  15. java list 包含字符串_Java8实战:查找列表中包含的字符串
  16. MIPI DSI-2 协议解析
  17. adb 无线wifi调试
  18. 微信小程序的事件处理,含BATJM大厂
  19. JS中“use strict”的含义以及使用它的区别
  20. 智能运维之告警聚合技术介绍

热门文章

  1. php集成paypal付款流程,在PHP中集成PayPal标准支付
  2. 同济计算机转专业吗,被不喜欢的专业录取了?大学想转专业需谨慎
  3. mysql ef sql语句_EF to MySQL 的 Database.ExecuteSqlCommand 和 SqlQuery
  4. mysql数据库中nchar_MySQL数据库中CHAR与VARCHAR之争
  5. 没有与参数列表匹配的 重载函数 getline 实例_面试题:方法重载的底层原理?...
  6. 机器学习--局部加权线性回归
  7. Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
  8. 基于人脸识别、姿态检测、距离估计的看电视姿态检测
  9. YOLO-v5训练自己的数据+TensorRT推理部署(2)
  10. 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)