博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解javascript原型的动态性
阅读量:6657 次
发布时间:2019-06-25

本文共 901 字,大约阅读时间需要 3 分钟。

  hot3.png

function Person(){}Person.prototype.name = 'sun';var person1 = new Person();alert("Person最初原型:"+person1.name);//第一次重写原型Person.prototype = {	constructor : Person,   //显式声明constructor	name : 'cheng',	age : 18};alert("原型被覆盖后P1:"+person1.name);   //sun//新实例var person2 = new Person();alert("原型覆盖后P2:"+person2.name);   //chengalert("最初  :"+ person1.constructor);   //指向Personalert("覆盖后:"+ person2.constructor);   //指向Person//第二次覆盖原型Person.prototype = {	constructor : Person,	name : 'ffff',	age : 18};alert("原型覆盖后P1:"+person1.name);   //sunalert("原型覆盖后p2:"+person2.name);   //chengvar person3 = new Person();alert("原型覆盖后p3:"+person3.name);   //fff

以上测试可以看出:

1:原型重写前创建的对象实例,始终指向重写前的prototype

2:原型重写后创建的对象实例,始终指向最新重写的prototype;

3:多个被重写的原型可以同时存在,并且都可以通过constructor与函数对象关联。

总结 ,对象实例中的[[prototype]]指针,始终指向对象实例被创建前最新出现的函数原型,永不改变;

            多个原型可以同时存在,并于函数对象关联;(需要显式声明constructor)

转载于:https://my.oschina.net/dlam/blog/498567

你可能感兴趣的文章
指针参数是如何传递内存的
查看>>
Server系列7:看win2012时代如何强制还原记录数据
查看>>
Linux下查看文件和文件夹大小 du df
查看>>
mongodb数据备份与恢复
查看>>
elf文件解析(cpp版)
查看>>
使用VS2010编译MongoDB C++驱动详解
查看>>
负载均衡(Load Balancing)学习笔记(三)
查看>>
Swing系统中实现帮助文档方法
查看>>
jquery设置和获得checkbox选中问题
查看>>
MySQL修改root密码的各种方法整理
查看>>
少女时代擦玻璃屏保
查看>>
我试试
查看>>
vi 命令 用法
查看>>
星际争霸1的AI设计思路:以人族开局为例
查看>>
我的友情链接
查看>>
WordPress教程
查看>>
drf 多表
查看>>
损失函数
查看>>
对spring的理解是什么?
查看>>
Linux -- Ubuntu搭建java开发环境
查看>>