浅谈JavaScript 覆盖原型以及更改原型


Posted in Javascript onAugust 31, 2016

覆盖原型

//囚犯示例 
//1.定义原型对象 
var proto = { 
 sentence : 4, //监禁年限 
 probation: 2 //缓刑年限 
}; 
//2.定义原型对象的构造函数 
var Prisoner = function(name, id) { 
 this.name = name; 
 this.id = id; 
}; 
//3.将构造函数关联到原型 
Prisoner.prototype = proto; 
//4.实例化对象——采用工厂函数实例化对象 
var makePrisoner = function(name, id) { 
 //采用工厂函数实力化对象prisoner 
 var prisoner = Object.create( proto ); 
 prisoner.name = name; 
 prisoner.id = id; 
 return prisoner; 
}; 
 
var firstPrisoner = makePrisoner( 'Joe', '12A' ); 
 
//firstPrisoner.sentence在firstPrisoner对象找不到sentence属性, 
//所以查找对象的原型并找到了Both of these output 4 
console.log( firstPrisoner.sentence ); 
console.log( firstPrisoner.__proto__.sentence ); 
//把对象的sentence属性设置为10 
firstPrisoner.sentence = 10; 
//outputs 10 
//确定对象上的属性值已设置为10 
console.log( firstPrisoner.sentence ); 
//但是对象的原型并没有变化,值仍然为4 
console.log( firstPrisoner.__proto__.sentence ); 
//为了使获取到的属性回到原型的值,将属性从对象上删除 
delete firstPrisoner.sentence; 
//接下来,JavaScript引擎在对象上不能再找到该属性, 
//必须回头去查找原型链,并在原型对象上找到该属性 
// Both of these output 4 
console.log( firstPrisoner.sentence ); 
console.log( firstPrisoner.__proto__.sentence );

ubuntu 终端node输出

xxh@xxh-E440:~/workspace$ node t6 
4 
4 
10 
4 
4 
4

那么如果改变了原型对象的属性值,会发生什么呢?我知道你在思考。

以上这篇浅谈JavaScript 覆盖原型以及更改原型就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 限制输入和粘贴(IE,firefox测试通过)
Nov 14 Javascript
Javascript 入门基础学习
Mar 10 Javascript
jquery Moblie入门—hello world的示例代码学习
Jan 08 Javascript
jquery批量控制form禁用的代码
Aug 06 Javascript
js控制表单不能输入空格的小例子
Nov 20 Javascript
Javascript基础知识(一)核心基础语法与事件模型
Sep 29 Javascript
Angular 路由route实例代码
Jul 12 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 Javascript
js实现自定义进度条效果
Mar 15 Javascript
redux-saga 初识和使用
Mar 10 Javascript
node.js调用C++函数的方法示例
Sep 21 Javascript
Vue 使用formData方式向后台发送数据的实现
Apr 14 Javascript
javascript 将共享属性迁移到原型中去的实现方法
Aug 31 #Javascript
使用vue编写一个点击数字计时小游戏
Aug 31 #Javascript
原生js实现tab选项卡切换
Mar 23 #Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 #Javascript
Javascript日期格式化format函数的使用方法
Aug 30 #Javascript
浅析ES6的八进制与二进制整数字面量
Aug 30 #Javascript
AngularJS轻松实现双击排序的功能
Aug 30 #Javascript
You might like
在线增减.htpasswd内的用户
2006/10/09 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
python制作websocket服务器实例分享
2016/11/20 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python读取文件名称生成list的方法
2018/04/27 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
【python】matplotlib动态显示详解
2019/04/11 Python
python队列Queue的详解
2019/05/10 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
pycharm导入源码的具体步骤
2020/08/04 Python
如何用Python 加密文件
2020/09/10 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
全国优秀辅导员事迹材料
2014/05/14 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
python 制作一个gui界面的翻译工具
2021/05/14 Python