这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
下面小编就为大家带来一篇浅谈 JavaScript 覆盖原型以及更改原型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随过来看看吧
覆盖原型
- //囚犯示例
- //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 覆盖原型以及更改原型就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 phperz。
来源: http://www.phperz.com/article/17/0512/332220.html