原型污染和猴子补丁 Prototype Pollution and Monkey-Patching

上两篇介绍了原型对象和原型链:

JavaScript对象创建模式:http://blog.csdn.net/hongse_zxl/article/details/44595809

深入理解JavaScript的原型对象 :http://blog.csdn.net/hongse_zxl/article/details/44622997

原型对象是JavaScript模拟类并实现继承的灵魂。这一篇介绍两个典型的问题:原型污染和猴子补丁

原型污染 Prototype Pollution

先看个例子:

function Person() { }               //先定义个空函数(空函数也有对应的原型对象)

//原型对象中声明两个方法,一个count,一个otherFunc
Person.prototype.count = function() {  //count方法统计原型对象中有多少个属性和方法
    var i = 0;
    for (var prop in this) { i++; }
    return i;
};
Person.prototype.otherFunc  = function() { };  //随便定义个空方法,起名叫otherFunc

var p = new Person();
p.name = "Jack";      //为对象添加两个属性name和age
p.age = 32;

alert(p.count());     //4

有了前两篇的基础,应该能明白为何最后结果为4,而不是2。对象p有两个属性name和age,而Person是个空函数,预想应该返回2才对。但实际结果返回了4,枚举时将

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值