javascript - 为什么是0? 和30?

查看:165
本文介绍了javascript - 为什么是0? 和30?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

1.下面程序执行后弹出什么样的结果?
function fn() {
            this.a = 0;
            this.b = function() {
                alert(this.a)
            }
        }
        fn.prototype = {
            b: function() {
                this.a = 20;
                alert(this.a);
            },
            c: function() {
                this.a = 30;
                alert(this.a);
            }
        }
        var myfn = new fn();
        myfn.b(); //0?
        myfn.c(); //30?

分析一下 谢谢!

解决方案

对象方法的优先级比原型方法要高,看例子:

    function People(){
      //对象方法
      this.show = function(){
        alert('对象方法');
      }
    }

    //类方法
    People.show = function(){
      alert('类方法');
    }

    //原型方法
    People.prototype.show = function(){
      alert('原型方法');
    }

    var p = new People();
    p.show();

打印结果:对象方法

推荐一篇文章:JS中的prototype,可以加深对prototype的理解

这篇关于javascript - 为什么是0? 和30?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆