浅谈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 相关文章推荐
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 Javascript
JavaScript中的函数嵌套使用
Jun 04 Javascript
理解Javascript的call、apply
Dec 16 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
Mar 06 Javascript
开启BootStrap学习之旅
May 04 Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
Vue Router的懒加载路径的解决方法
Jun 21 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
vue如何限制只能输入正负数及小数
Jul 04 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 Javascript
vue 实现弹窗关闭后刷新效果
Apr 08 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连mysql和oracle数据库性能比较
2006/10/09 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
一份python入门应该看的学习资料
2018/04/11 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
python读取mysql数据绘制条形图
2020/03/25 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
天猫精选:上天猫,就够了
2016/09/21 全球购物
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
村道德模范事迹材料
2014/08/28 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2019各种承诺书范文
2019/06/24 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
Java的Object类的九种方法
2022/04/13 Java/Android
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技