浅谈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 相关文章推荐
jQuery操作input type=radio的实现代码
Jun 14 Javascript
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
JS判断是否360安全浏览器极速内核的方法
Jan 29 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 Javascript
jQuery获取DOM节点实例分析(2种方式)
Dec 15 Javascript
javascript+css3 实现动态按钮菜单特效
Feb 06 Javascript
jquery动态遍历Json对象的属性和值的方法
Jul 27 Javascript
Openlayers实现距离面积测量
Sep 28 Javascript
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
解决vue-router的beforeRouteUpdate不能触发
Apr 14 Vue.js
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
目录,文件操作详谈―PHP
2006/11/25 PHP
php知道与问问的采集插件代码
2010/10/12 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
python中执行shell命令的几个方法小结
2014/09/18 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
大学生找工作推荐信范文
2013/11/28 职场文书
庆六一活动总结
2014/08/29 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
mysql查看表结构的三种方法总结
2022/07/07 MySQL