zoukankan      html  css  js  c++  java
  • JS中注意原型链的“指向”

    昨天压缩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方法,如果在改变原型链指向之后实例化对象则会解决该问题。

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

  • 相关阅读:
    scrapy入门
    xpath的基本使用
    xpath 的用法
    线程同步
    Round #336 A. Saitama Destroys Hotel(Div.2)
    hdoj 1166 敌兵布阵(线段树and树状数组)
    hdoj 1873 看病要排队
    hdoj 2289 Cup
    hdoj 2689 Sort it
    hdoj 1150 Machine Schedule
  • 原文地址:https://www.cnblogs.com/zzq-include/p/4543108.html
Copyright © 2011-2022 走看看