码迷,mamicode.com
首页 > Web开发 > 详细

JS中注意原型链的“指向”

时间:2015-06-01 08:20:32      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

昨天压缩Js文件时发现了项目中的一个prototype的问题代码如下所示:

1.

<script>
        var XXX = function(){

        };
        var x1 = new XXX();
        XXX.prototype.fnx = function(){
            alert("123");
        }

        x1.fnx();
    </script>

2.

<script>
        var XXX = function(){

        };
        var x1 = new XXX();
        XXX.prototype = {
            fnx: function () {
                alert("123");
            }
        }
        x1.fnx();
    </script>

      实际情景的代码如上类似,在1中我们可以执行fnx方法,但2中我们却不行,问题就是出现在实例化后XXX的原型链方向已经改变。

代码1中XXX.prototype.fnx只是向原型链中加入一个方法,并不影响原型链的指向,而在代码2中是将原型链指向一个含有fnx方法的Object这样你之前实例化的对象原型链和当前的并无关系,所以无法执行fnx方法,如果在改变原型链指向之后实例化对象则会解决该问题。

      希望广大码友注意类似问题!

JS中注意原型链的“指向”

标签:

原文地址:http://www.cnblogs.com/zzq-include/p/4543108.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!