浅谈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 封装Ajax传递的数据代码
Jun 05 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 Javascript
通过action传过来的值在option获取进行验证的方法
Nov 14 Javascript
AngularJs 弹出模态框(model)
Apr 07 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
AngularJS 中文API参考手册
Jul 28 Javascript
简单实现JavaScript图片切换效果
Nov 28 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
May 17 Javascript
vue-cli项目代理proxyTable配置exclude的方法
Sep 20 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 Javascript
JavaScript封闭函数及常用内置对象示例
May 13 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
js中数组Array的一些常用方法总结
2013/08/12 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python列表推导式的使用方法
2013/11/21 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
工程质量月活动方案
2014/02/19 职场文书
办理护照工作证明
2014/10/10 职场文书
汽车转让协议书范本
2014/12/07 职场文书
微信搭讪开场白
2015/05/28 职场文书
Java并发编程必备之Future机制
2021/06/30 Java/Android
MySQL 四种连接和多表查询详解
2021/07/16 MySQL
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
Nginx配置根据url参数重定向
2022/04/11 Servers