浅谈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 相关文章推荐
简单实用的js调试logger组件实现代码
Nov 20 Javascript
读jQuery之二(两种扩展)
Jun 11 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
Mar 16 Javascript
jquery实现加载进度条提示效果
Nov 23 Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 Javascript
AngularJs Injecting Services Into Controllers详解
Sep 02 Javascript
JavaScript登录记住密码操作(超简单代码)
Mar 22 Javascript
ES6中Iterator与for..of..遍历用法分析
Mar 31 Javascript
vue项目如何刷新当前页面的方法
May 18 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 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
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
限制文本字节数js代码
2007/03/06 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Python中的tuple元组详细介绍
2015/02/02 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
Python pymongo模块常用操作分析
2018/09/01 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
本科毕业生自荐信
2014/05/26 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
2015年统战工作总结
2015/05/19 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
Python包argparse模块常用方法
2021/06/04 Python
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python