浅谈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 相关文章推荐
CSS javascript 结合实现悬浮固定菜单效果
Aug 23 Javascript
js表单验证实例讲解
Mar 31 Javascript
bootstrap学习笔记之初识bootstrap
Jun 21 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
JavaScript DOM常用操作代码汇总
Jul 03 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 Javascript
手写Vue2.0 数据劫持的示例
Mar 04 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 __autoload()方法真的影响性能吗?
2012/03/30 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python多进程实现文件下载传输功能
2018/07/28 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
我的祖国演讲稿
2014/05/04 职场文书
主题教育活动总结
2014/05/05 职场文书
活动总结的格式
2014/05/07 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
redis 解决库存并发问题实现数量控制
2022/04/08 Redis